awk使用简介

awk使用简介,第1张

概述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使用简介所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1023035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存