awk

mac2025-03-13  12

awk

提取passwd文件分隔符为冒号的第二行的第3个字段的数据 [root@localhost ~]# awk -F: 'NR==2{print $3}' passwd 1 [root@localhost ~]# cat passwd | awk -F: 'NR==2{print $3}' 1 提取passwd文件第二行一整行数据 [root@localhost ~]# awk -F: 'NR==2{print $0}' passwd bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost ~]# awk -F: 'NR==2' passwd bin:x:1:1:bin:/bin:/sbin/nologin 取文件第二行的最后一个字段 [root@localhost ~]# awk -F: 'NR==2{print $NF}' passwd /sbin/nologin 取文件第二行倒数第二个字段 [root@localhost ~]# awk -F: 'NR==2{print $(NF-1)}' passwd /bin 取文件里匹配到xixi行的第二个字段 [root@localhost ~]# cat abc haha 05/99 48311 green 8 40 44 xixi 06/99 48371 green 9 24 26 [root@localhost ~]# awk '/xixi/{print $2}' abc 06/99 取文件里匹配到xixi行的第二个字段并将结果写到hello.txtx文件中 [root@localhost ~]# awk '/xixi/{print $2}' abc |tee hello.txt 06/99 [root@localhost ~]# cat hello.txt 06/99 取文件第一和第五字段 [root@localhost ~]# awk '{print $1,$5}' abc haha 8 xixi 9 //加逗号会增加空格,不加结果会连在一起 取文件第一字段并加入字段头name [root@localhost ~]# awk 'BEGIN{print "name"} {print $1}' abc name haha xixi 取文件第一字段并加入字段头name在结尾加入hehe [root@localhost ~]# awk 'BEGIN{print "name"} {print $1} END{print "hehe"}' abc name haha xixi hehe 取文件在脚本文件中所得字段的字段 [root@localhost ~]# cat test.awk #!/usr/bin/awk {print $1,$2} [root@localhost ~]# awk -f test.awk abc haha 05/99 xixi 06/99 取文件第一和第四字段并加入字段头并用table隔开 [root@localhost ~]# awk 'BEGIN{print "名字\t段带"} {print $1"\t"$4}' abc 名字 段带 haha green xixi green 取文件匹配到green或Green行的倒数第二个字段 [root@localhost ~]# cat abc haha 05/99 48311 Green 8 40 44 xixi 06/99 48371 green 9 24 26 [root@localhost ~]# awk '/[Gg]reen/{print $(NF-1)}' abc 40 24 在文件中第六个字段小于50取整行 [root@localhost ~]# cat abc haha 05/99 48311 Green 8 40 44 xixi 06/99 48317 green 9 24 26 lulu 09/19 50000 blue 20 50 55 feilipu 10/19 50001 Black 40 60 70 [root@localhost ~]# awk '{if($6<50) print $0}' abc haha 05/99 48311 Green 8 40 44 xixi 06/99 48317 green 9 24 26 取文件中第三个字段为50000的行输出整行 [root@localhost ~]# awk '$3 ~ /50000/{print $0}' abc lulu 09/19 50000 blue 20 50 55 取文件中第四字段不等于blue的所有行 [root@localhost ~]# awk '{if($4!~/blue/) print $0}' abc haha 05/99 48311 Green 8 40 44 xixi 06/99 48317 green 9 24 26 feilipu 10/19 50001 Black 40 60 70 取文件中开头为h结尾为a的行 [root@localhost ~]# awk '$1~/^h..a$/' abc haha 05/99 48311 Green 8 40 44 取文件中第五字段是9且第一字段为xixi的行 [root@localhost ~]# awk '{if($5~/9/ && $1~/xixi/)print $0}' abc xixi 06/99 48317 green 9 24 26 输出文件名 [root@localhost ~]# awk 'END{print FILENAME}' passwd passwd 输出文件有多少行 [root@localhost ~]# awk 'END{print FNR}' passwd 21 [root@localhost ~]# cat passwd |wc -l 21 输出文件每行有多少列 [root@localhost ~]# awk '{print NF}' abc 7 7 7 7 输出最后字段 [root@localhost network-scripts]# echo $PWD | awk -F/ '{print $NF}' network-scripts 文件中第四字段等于Black输出第一字段+is belt+第四字段的行 [root@localhost ~]# awk '{name=$1;belt=$4;if($4~/Black/) print name" is blet "belt}' abc feilipu is blet Black 取文件中第一行第一字段为haha第五字段为第五字段加22输出第五字段 [root@localhost ~]# awk 'NR==1{if($1~/haha/) $5=$5+22;print $5}' abc 30 取文件中第一行第一字段为haha,将哈哈改为tom,输出第一字段 [root@localhost ~]# awk 'NR==1{if($1~/haha/) ($1="tom");print $1}' abc tom [root@localhost ~]# awk 'NR==1{if($1=="haha") {($1="tom");print $1}}' abc tom % cA S C I I字符% d整数% e 浮点数,科学记数法% f浮点数,例如(1 2 3 . 4 4)% ga w k决定使用哪种浮点数转换 e或者f% o八进制数% s字符串% x十六进 (两个%s对应前边的name,hellowork字符串) [root@localhost ~]# awk 'BEGIN{print "name\thelloword"}{printf "%-10s %s\n",$1,$7}' abc name helloword haha 44 xixi 26 lulu 55 feilipu 70 取文件中第五字段的和 [root@localhost ~]# awk '{total=$5} END{print "The club is:" total}' abc The club is:40 将文件中字段40的改为100并打印出哪一行 [root@localhost ~]# cat abc haha 05/99 48311 Green 8 40 44 xixi 06/99 48317 green 9 24 26 lulu 09/19 50000 blue 20 50 55 feilipu 10/19 50001 Black 40 60 70 [root@localhost ~]# awk 'gsub(/40/,100){print $0}' abc haha 05/99 48311 Green 8 100 44 feilipu 10/19 50001 Black 100 60 70 [root@localhost ~]# awk 'sub(/40/,100,$0)' abc haha 05/99 48311 Green 8 100 44 feilipu 10/19 50001 Black 100 60 70 第二字段是从第一个字段的第几位开始的 [root@localhost ~]# awk 'BEGIN{print index("jobtomjerryhello","rr")}' 9 查看文件第一字段的字符数并打印 [root@localhost ~]# awk '{print length($1) $1}' abc 4haha 4xixi 4lulu 7feilipu [root@localhost ~]# echo |awk 'BEGIN{print split("123#456#789",haha,"#")}{print haha[2]}' 3 456 [root@localhost ~]# awk '$1~/feilipu/{print substr($1,3,3)}' abc ili [root@localhost ~]# awk '$1~/feilipu/{print substr($1,3)}' abc ilipu [root@localhost ~]# echo|awk 'BEGIN{a="helloword"}END{print substr(a,3)}' lloword
最新回复(0)