概述awk是一种优良的流氏文本处理工具,在使用单行命令的时候十分方便,在进行简单文本 *** 作的时候无需在使用perl或python编写脚本,当然perl的单行命令也足够强大,只是使用习惯不同而已;相比于grep和sed来说awk可以更好对某一分割的区域进行筛选及 *** 作。 F 用于识别分隔符 1 2 3 4 5 6 7 8 9 10 bogon:Desktop lilibei$ cat 3.txt bogon
awk是一种优良的流氏文本处理工具,在使用单行命令的时候十分方便,在进行简单文本 *** 作的时候无需在使用perl或python编写脚本,当然perl的单行命令也足够强大,只是使用习惯不同而已;相比于grep和sed来说awk可以更好对某一分割的区域进行筛选及 *** 作。
F 用于识别分隔符
1 2 3 4 5 6 7 8 9 10 bogon:Desktop lilibei$ cat 3.txt bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 A B C D a b c d a 1 2 b bogon:Desktop lilibei$ awk -F 't' '/1/' 3.txt 1 2 3 4 a 1 2 b
$0代表整行,$1代表第1列,$2代表第二列,$3完后以此类推
1 2 3 4 5 6 7 8 9 10 11 #打印指定列 bogon:Desktop lilibei$ awk -F 't' '{print "t"}' 3.txt 1 2 A B a b a 1 bogon:Desktop lilibei$ awk -F 't' '{print "M####M"}' 3.txt 1M####M2 AM####MB aM####Mb aM####M1
OFS 指定打印的分隔符
1 2 3 4 5 6 #作用等同于上个例子 bogon:Desktop lilibei$ awk -F 't' 'OFS="#"{print ,}' 3.txt 1#2 A#B a#b a#1
awk的正则匹配不支持{}
按照段落匹配,精准匹配,精准打印
1 2 3 4 5 6 7 8 9 #匹配第一列含有a的行,且只打印第四列 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 Aa B C D aa b c d aaaaa 1 2 b bogon:Desktop lilibei$ awk -F 't' '~/a/ {print }' 3.txt d b
多个条件进行匹配
1 2 3 4 5 6 7 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 A B C D a b c d a 1 2 b bogon:Desktop lilibei$ awk -F 't' '~/a/&&==2{print a 1 2 b }' 3.txt 1
条件判断
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 A B C D a b c d a 1 2 b 't' bogon:Desktop lilibei$ awk -F '>0&&<3' a 1 2 b 3.txt #段落大小比较 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 A B C D a b c d a 1 2 b 't' bogon:Desktop lilibei$ awk -F '<' 1 2 3 4 3.txt A B C D a b c d a 1 2 b 1
if判断
2 3 4 5 6 7 8 9 10 11 12 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F 'OFS="t" {if(==1) print }' 1 3.txt bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F 'OFS="t" {if(==1) print ,}' 1 1 3.txt 1
NR 行数
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #打印第3行 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F 'NR==3' 1 1 1 1 3.txt #打印指定列 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F 'NR==3 {print ,}' 1 1 3.txt bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F '{print NR}' 1 3.txt 2 3 1
NF 每一行列的个数
2 3 4 5 6 7 8 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F '{print NR,NF}' 1 4 3.txt 2 4 3 4 1
构造新的列
2 3 4 5 6 7 8 9 10 11 12 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' bogon:Desktop lilibei$ awk -F 'OFS=":"{=+;print 1:2:3:4:7 }' 1:2:3:4:7 3.txt 1:1:1:1:2 't' 'OFS=":"{=+;print ,}' bogon:Desktop lilibei$ awk -F 1:7 1:7 3.txt 1:2 1 2
循环计数
3 4 5 6 bogon:Desktop lilibei$ cat 3.txt 1 2 3 4 1 2 3 4 1 1 1 1 't' '{(sum=sum+);(sum=sum+)};END {print sum}' bogon:Desktop lilibei$ awk -F 8 3.txt
原文:大专栏 awk使用简介
总结
以上是内存溢出为你收集整理的awk使用简介全部内容,希望文章能够帮你解决awk使用简介所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)