查找没有最终结果的序列

时间:2015-02-14 19:46:06

标签: unix search terminal grep find

我想搜索一个文件表达式,这些表达式不会以" s"喜欢'正则表达猫'和“正则表达式猫”,我希望只选择“猫”#。 我有这个,但它没有工作

grep "regex \w*[^s]" file.txt

3 个答案:

答案 0 :(得分:1)

您可以使用-v标志来否定模式。 也就是说,作为模式,您只需使用s$(行以" s"结尾), 然后-v标志将颠倒含义, 只打印不会以" s"

结尾的行

例如,如果您在sample.txt中有此内容:

regex cats
regex cat
regex dogs

然后此命令将仅匹配第二行:

grep -v 's$' sample.txt

答案 1 :(得分:0)

我认为您可以使用锚点来解决它,在这种情况下是行的末尾,$字符:

grep 'regex \w*[^s]$' file.txt

编辑使用负面的后置断言添加perl正则表达式的另一种方法:

grep -P 'regex \w+$(?<!s)' file.txt

答案 2 :(得分:0)

使用grep

echo "apple mangoes plums banana"|grep --colour -o '\(^\| \)[^ ]\+[^s]\( \|$\)'

使用egrep

echo "apple mangoes plums banana"|egrep --colour -o '(^| )[^ ]+[^s]( |$)'

上面的内容将匹配任何以s结尾的单词,在行的开头,行的结尾或行上的任何其他位置开头并打印

我添加了一个--colour开关到找到的颜色模式