Ven*_*eki 8 awk regular-expression
我试图过滤掉包含特定单词的行。正则表达式是脚本的命令行输入。
$0 ~ regex {
//Do something.
}
Run Code Online (Sandbox Code Playgroud)
样本输入是:
**String** **number**
domain 1
domain 2
bla 3
Run Code Online (Sandbox Code Playgroud)
因此,从上面的输入中,用户可以说 - 过滤掉包含“域”一词的行。
我试过的:
regex = "\?\\!domain"
Run Code Online (Sandbox Code Playgroud)
(负前瞻)。
但是这个正则表达式过滤掉了每一行。不仅仅是带有“域”一词的行。
Dop*_*oti 12
对于input
包含以下内容的给定输入文件:
domain
demesne
Run Code Online (Sandbox Code Playgroud)
过滤包含 的行domain
:
$ awk '/domain/ { print }' input
domain
Run Code Online (Sandbox Code Playgroud)
过滤不包含的行domain
:
$ awk '!/domain/ {print }' input
demesne
Run Code Online (Sandbox Code Playgroud)
对于基于字段而不是整行的过滤,我们可以对新的给定input
文件尝试以下操作:
example www.example.com
exemplar www.example.net
Run Code Online (Sandbox Code Playgroud)
过滤掉第一个字段包含的行 example
:
$ awk '$1 !~ /example/ { print }' input
exemplar www.example.net
Run Code Online (Sandbox Code Playgroud)
在您的问题中,您使用的$0
是整行而不是第一个字段。