简单的说,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.youkuaiyun.com/chrycoder/article/details/101274334