awk命令学习(1)
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
使用方法
例子
一般用法
1 2 3 4 5 | #echo ‘this is war’ > Desktop/1.txt #awk '{print $1 $2 $3}' Desktop/1.txt 结果: thisiswar |
-F(默认空格)
1 2 3 4 5 | awk -F 'is' '{print $1 $2 $3}' Desktop /1 .txt 结果: th war |
OFS用法:($1~is 匹配含is的段落)
1 2 3 4 | echo ‘this is war’| awk -F ':' '$1~is {OFS="#";print $1,$2}' 结果: this is war # |
($1=="is" 匹配is)
1 2 3 4 | echo 'is' | awk -F ':' '$0=="is" {OFS="#";print $1,$2}' 结果: is # |
‘||’表示或 NR表示行号
1 2 3 4 5 6 7 8 9 10 11 12 13 | awk -F ':' '$0~/home/ || NR>270 {OFS="#";print $1,$2}' 'Desktop/1.txt' 匹配 /home/ 或大于行号270的段落 结果: /home/jjj/ . local /share/gvfs-metadata/root # /home/jjj/ . local /share/gvfs-metadata/root-2c6b185d .log # /var/lib/dpkg/info/fakeroot .postrm # /var/lib/dpkg/info/fakeroot .prerm # /var/lib/dpkg/info/libfakeroot #amd64.conffiles /var/lib/dpkg/info/libfakeroot #amd64.list /var/lib/dpkg/info/libfakeroot #amd64.md5sums /var/log/fsck/checkroot # |
‘&&’表示并且
1 2 3 4 5 6 7 | awk -F ':' '$0~/home/ && NR<10 {OFS="#";print $1,$2}' 'Desktop/1.txt' 不仅要包含 /home/ 而且行号要小于10 结果: /home/jjj/ . local /share/gvfs-metadata/root # /home/jjj/ . local /share/gvfs-metadata/root-2c6b185d .log # |
运算 例:$1=$2+$3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #cat Desktop/1.txt 1 2 3 4 5 6 7 8 9 #awk '$1=$2+$3 {print}' 'Desktop/1.txt' (加) 5 2 3 11 5 6 17 8 9 #awk '$1=$2*$3 {print}' 'Desktop/1.txt' (乘) 6 2 3 30 5 6 72 8 9 #awk '$1=$2/$3 {print}' 'Desktop/1.txt' (除) 0.666667 2 3 0.833333 5 6 0.888889 8 9 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步