簡單的說,awk就是獲取到文本行後,按照分隔符處理每一個域,這個域就是分割的一段一段的值。
$0 --整行 $n---第n個域
awk ' pattern {action}
-
兩種常用方法:
1.cat 1.txt |awk -F 'x' '{print $0}' --x是分隔符 可以是字符或字符串
2. awk -F 'x' '{print $0}' 1.txt ---注意單引號
-
下面是幾種簡單的使用:
1.打印出來的域以tab鍵分割 ,\t
主要是print 的變化: '{print $1"\t"$2}' ----注意雙引號
2.以某一個字符串分割 用 this分割
cat 2.txt
awk -F 'this' '{print $1}' 2.txt
3.用內置變量打印
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數
FS 設置輸入域分隔符,等價於命令行 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
awk '{print "file:" FILENAME ",line " NR ",text:" $0}' 2.txt
打印第十行
awk 'NR==10' file1.txt tail -n+10 file1.txt
4.使用printf 代替print
awk '{printf "file:%s,line %d,text:%s\n", FILENAME, NR, $0}' 2.txt
5.在文件的頭尾添加行
cat 1.txt |awk 'BEGIN {print "the first line"} {print $1} END {print "the last line"}'
6.使用正則匹配第一個域爲three的行。
awk '$1 ~ /three/' 2.txt
正則表達式:https://blog.csdn.net/chrycoder/article/details/101274334