awk命令学习(1)

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

使用方法

例子

    一般用法

#echo ‘this is war’  > Desktop/1.txt
#awk '{print $1 $2 $3}' Desktop/1.txt

结果:
    thisiswar

 

-F(默认空格)

awk -F 'is' '{print $1 $2 $3}' Desktop/1.txt    


结果:
    th  war

  OFS用法:($1~is 匹配含is的段落)

echo ‘this is war’|awk -F ':' '$1~is {OFS="#";print $1,$2}'

结果:
    this is war#

  ($1=="is" 匹配is)

echo 'is'|awk -F ':' '$0=="is" {OFS="#";print $1,$2}'

结果:
   is#

  ‘||’表示或   NR表示行号

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#

  ‘&&’表示并且 

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

 #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

  

 

转载于:https://www.cnblogs.com/jjj-fly/p/8046587.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值