通过几个案例讲解linux下的awk命令


本文摘自PHP中文网,作者齐天大圣,侵删。

shell编程三剑客里,awk比另外两个命令grep、sed更加复杂,更加难以掌握,因为awk是可以作为一个编程语言的!难归难,但该命令是必须要掌握的命令,因为它的功能实在太强大了!

awk基本结构如下:

1

awk [选项] 'pattern1 {action1} patten2 {action2} ……' filename

  • 单引号是为了和shell命令区分开来。

  • 大括号表示一个命令分组。可以是一个动作,或多个动作,如果是多个动作,则动作之间需要加上;或输入enter键

  • pattern是模式,表示匹配到的行才进行action。模式可以是正则,或算术表达式等

  • pattern和action可以只有其一,但不能两者都没有

awk常用的选项如下:

  • -F:指定分割符,分割符可以是字符也可以是一个正则表达式

  • -v val=value,定义一个变量并赋值

下面,我来通过一个应用来讲解awk命令的使用。下面是一个文本文件的部分内容

1

2

3

4

5

6

7

8

9

10

11

12

# head city.txt

北京 BEIJING BJ

 

上海 SHANGHAI SH

 

天津 TIANJIN TJ

 

重庆 CHONGQING ZQ

 

阿克苏 AKESU AKS

 

……

现在的需求是,获取每个城市的全拼,然后转换为小写形式再连接上hellowx.com。其他的信息全部给过滤掉。

1

2

3

4

5

6

7

8

9

10

11

# awk 'NR%2==0{next}{print}' city.txt  | head -n 10

北京 BEIJING BJ

上海 SHANGHAI SH

天津 TIANJIN TJ

重庆 CHONGQING ZQ

阿克苏 AKESU AKS

安宁 ANNING AN

安庆 ANQING AQ

鞍山 ANSHAN AS

安顺 ANSHUN AS

安阳 ANYANG AY

我们注意到,偶数行都是空白行。所以只要过滤偶数行就行了。这样过滤掉了空白行。注意上面的NR表示当前行号,意思是偶数行全部过滤掉。next表示忽略当前行。

阅读剩余部分

相关阅读 >>

通过几个案例讲解linux下的awk命令

通过几个案例讲解linux下的awk命令

更多相关阅读请进入《linxu》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...