我的数据格式如下:
a cat
a dog
brown cat
brown dog
brown cow
brown sheep
brown fish
除brown dog
外,我想过滤掉所有以“棕色”开头的行。有没有简单的方法可以使用grep或awk做到这一点?我试图像这样使用克拉负值:
grep -v "brown ^\(dog\)" corpus.txt
...但是那没用。任何想法将不胜感激。
最终我希望输出如下:
a cat
a dog
brown dog
答案 0 :(得分:3)
使用awk
:
awk '/^brown dog/ || !/^brown/' file
a cat
a dog
brown dog
这只是一项学术练习,是grep
命令,没有实验 PCRE
选项:
grep -vE '^brown($|[^ ]| ([^d]|$)| d([^o]|$)| do([^g]|$))' file
答案 1 :(得分:2)
是的,先生:
mergeTasks.Add(Task.Run(() => {
if (i >= allArrays.Count) Console.WriteLine($"i is too high! i = {i}");
return Merge(allArrays[tmp], allArrays[tmp + 1]);
}));
grep -vP '^brown (?!dog)' file
a cat
a dog
brown dog
供pcre引擎使用。
选中explanations
答案 2 :(得分:2)
awk '/^brown/ && !/dog$/{next} 1' file
答案 3 :(得分:1)
好,这已经是午夜了。我要发布这个awk:
$ awk '!(/brown/ && !/dog/)' file
...,并认为是早上。 :D晚安。
没有,无法入睡,不得不解决它:
$ awk '!/^brown/ || /dog/' file
输出:
a cat
a dog
brown dog
答案 4 :(得分:0)
不清楚您是否只想只接受“棕色狗”,但也许您只想要类似的东西:
sed -e '/^brown/{/dog/!d;}'
这将删除所有以“棕色”开头的行,除非它们与字符串“ dog”匹配。或者,也许您想变得更严格,然后做:
awk '!/^brown/ || $2 == "dog"'
答案 5 :(得分:0)
另一个awk
:
$ awk '!(/^brown/ && $2!="dog")' file
a cat
a dog
brown dog