使用sed进行精确单词匹配的正则表达式

时间:2015-01-14 15:28:53

标签: regex bash unix sed

我有一个名为test的文件:

Helloabcd hi 123
abcif a equals babc
you abc 123abc
one abc two
three aggbc four abc1

我只想打印具有确切单词' abc'的那些,所以输出为:

Helloabcd hi 123 
abcif a equals babc
three aggbc four abc1

这就是我所做的:

sed '/'^(.*)[ ]abc[ ]*(.*)$'/!d' test  

我的正则表达式出了什么问题?

thanksss

4 个答案:

答案 0 :(得分:0)

我想你想要这个,

$ sed -n '/\(^\| \)abc\( \|$\)/p' file
you abc 123abc
one abc two

上述反转将是,

$ sed '/\(^\| \)abc\( \|$\)/d' file
Helloabcd hi 123
abcif a equals babc
three aggbc four abc1

答案 1 :(得分:0)

尝试使用单词边界\b

sed -n '/\babc\b/p' test

答案 2 :(得分:0)

如果您想尝试awk,则需要字边界:

awk '/\<abc\>/' file
you abc 123abc
one abc two

答案 3 :(得分:-1)

你问了sed。有时候答案是使用更适合您要求的工具:

考虑awk:

awk '/abc/' infile

考虑grep

grep 'abc' infile

Avinash向您展示了一个sed解决方案。你很高兴。