linux裡面substr函式_Linux 三劍客之awk 命令
阿新 • • 發佈:2021-01-09
技術標籤:linux裡面substr函式
1. 簡介
AWK 是一種處理文字檔案的語言,是一個強大的文字分析工具。
類似於sql: awk=select field from table
之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字元。
awk指令碼通常由以下3部分構成: BEGIN{ 這裡面放的是執行前的語句 } END {這裡面放的是處理完所有的行後要執行的語句 } {這裡面放的是處理每一行時要執行的語句}
2. 基本用法
awk [選項引數] 'script' var=value file(s)awk [選項引數] -f scriptfile var=value file(s)
2.1 處理指定檔案的內容
awk 'condition { action }' filename
2.2 處理某個命令的執行結果
command | awk ' condition { action }'
3. 變數
3.1 FS(欄位分隔符)
-F fs or --field-separator fs
指定輸入檔案折分隔符,fs是一個字串或者是一個正則表示式,如-F:
# $0 表示當前整行內容,$1,$2 表示第一個欄位,第二個欄位# 預設以空格作為分隔符 輸出第一個欄位echo "aa bb cc dd ee ff" | awk '{print $1}'# 以丨作為echo "aa bb l cc dd l ee ff" | awk -F 'l' '{print $1}'echo "aa bb cc : dd ee ff" | awk -F ':' '{print $1}'
以1作為分割符輸出第一個字元和第二個字元
3.2 NF(當前行的欄位個數)
$NF就代表最後一個欄位,$(NF-1)代表倒數第二個欄位
#以空格為分隔符列印最後一個欄位 echo "aa bb cc dd" | awk '{ print $NF}'#以空格為分隔符列印倒數第二個欄位 echo "aa bb cc dd" | awk '{ print $(NF-1)}'#以|為分隔符 列印倒數第二個欄位echo "aa bb cc dd" | awk -F '|' '{ print $(NF-1)}'
3.3 NR (當前處理的是第幾行)
cat test.txt | awk '{print NR")", $0}'
列印當前行號和當前文字內容
3.4 FILENAME(當前檔名)
awk '{print FILENAME, NR")", $0}' test.txt
3.5 其他變數
- RS:行分隔符,用於分割每一行,預設是換行符。
- OFS:輸出欄位的分隔符,用於列印時分隔欄位,預設為空格。
- ORS:輸出記錄的分隔符,用於列印時分隔記錄,預設為換行符。
- OFMT:數字輸出的格式,預設為%.6g。
4. 函式
4.1 print 和 printf
用於列印輸出的函式
4.2 常用函式
- substr():返回子字串。
- substr($1,2):返回第一個欄位,從第2個字元開始一直到結束。
- substr($1,2,3):返回第一個欄位,從第2個字元開始開始後的3個字元。
- sin():正弦。
- cos():餘弦。
- sqrt():平方根。
- rand():隨機數。
- toupper():字元轉為大寫。
- tolower():字元轉為小寫。
5 正則表示式
# 查詢包含root的行 cat test.txt | awk '/root/ {print $0}'#查詢包含user和orange的行cat test.txt | awk '/usr/orange/ {print $0}'