eg:输出文本中第一列和第三列
awk '{print $1,$3}' test.txt
$0 表示输出所有内容
eg:修饰表头和表尾
awk 'BEGIN {print "It is begin"} {print $1,$3} {print "It is end"} test.txt
eg:统计每行的其中两列的和
awk '{print $1,$3,$1+$3}' test.txt
eg:筛选某一行含有beijing字符的列
awk '$3 ~ /beijing/ {print $1,$3}'
eg:过滤字符过长,可以将命令保存到文件awk.txt中,-f指定
awk -f awk.txt test.txt
eg:只展示奇数行
awk 'NR%2==0 {next} {print NR,$0}' test.txt
NR表示当前行号
next动作表示,一旦遇到偶数行,跳过
eg:合并所有行
awk '{T=T" "$0} END {print T}' test.txt
eg:awk调用shell
awk 'BEGIN { system("ls -al")}'
awk 里的substr函数用法举例:
要截取要截取的内容1:
F115!16201!1174113017250745 10.86.96.41 211.140.16.1 200703180718
F125!16202!1174113327151715 10.86.96.42 211.140.16.2 200703180728
F235!16203!1174113737250745 10.86.96.43 211.140.16.3 200703180738
F245!16204!1174113847250745 10.86.96.44 211.140.16.4 200703180748
F355!16205!1174115827252725 10.86.96.45 211.140.16.5 200703180758
使用 awk 内置的取子串函数提取输入文件中的手机号
$ awk -F '[ !]' '{print substr($3,6)}' test.txt
13017250745
13327151715
13737250745
13847250745
15827252725
解释:
substr($4,20) ---> 表示是从第4个字段里的第20个字符开始,一直到设定的分隔符","结束.
substr($3,12,8) ---> 表示是从第3个字段里的第12个字符开始,截取8个字符结束.
awk制定某一列精确字符匹配
比如只匹配第二列数字为88的行
awk '$2~/^88$/ {print $0}'
如果要在脚本里面调用awk,且awk里面有需要传入变量写法如下
awk '$2~/^'$err_no'$/ {print $2}'
awk过滤的艺术
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...