我想搜索一个文件表达式,这些表达式不会以" s"喜欢'正则表达猫'和“正则表达式猫”,我希望只选择“猫”#。 我有这个,但它没有工作
grep "regex \w*[^s]" file.txt
答案 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开关到找到的颜色模式