首页  |  Linux  |  C/C++  |  网络编程  |  Python   |  Algorithm  |  数据库  |  经验  |   人生 & 随想   |  站内搜索  |  关于

<<< previous

该文已被浏览1599

!:awk与sed中的不同用法

2016-04-02

在 Awk 和 Sed 中,感叹号 ! 都表示取非操作,但是这个取非符号在 Awk 和 Sed 中用法有一些不同,下面来举例说明.
下面是一个文本文件 example.txt 中的内容:
CH12
CH23au
RCH34
CH99de
ZE33a
CH88aude
CHa
现在想要对该文件中的内容做一些修改,修改规则如下:
如果该文件中的某一行字符串是以 CH 打头,并且该行字符串中不包含子串 au, 则在该行字符串的末尾添加子串 au.
之后输出文件中的内容,按照上面的规则,输出的内容应该如下所示:
CH12au
CH23au
RCH34
CH99deau
ZE33a
CH88aude
CHaau
下面分别使用 Awk 和 Sed 来完成上述任务.

Awk

下面是 Awk 的做法:
$ awk '/^CH/ && !/au/ {$0=$0"au"}1' example.txt

Sed

下面是 Sed 的做法:
$ sed '/^CH/ {/au/! s/$/au/}' example.txt
通过上面的例子可以看出,取非符号 ! 在 Sed 和 Awk 中所用的位置不同,在 Awk 中,! 用在匹配模式的左侧,而在 Sed 中,! 用在匹配模式的右侧.

一如既往,如果你对文章中的内容有任何疑问,或者是发现文章中有任何错误,都可以通过下面的地址发邮件告诉我.
E-mail: rytubuntulinux@gmail.com