删除包含x量内容的所有字符串

时间:2016-07-05 22:14:50

标签: regex shell text sed

我有一个相当大的文本文件,其中包含如下所示的字符串:

//a/b/ww/d/ //b/d/we/c/ //a/b/as/d/e/ //af/y/x/f/e/ //b/d/we/c/

我正在尝试删除其中只有6个正斜杠的所有行。

斜杠之间的文字是随机的,可以更长或更短。

期望的输出:

//a/b/as/d/e/ //af/y/x/f/e/

最有效的方法是什么?

2 个答案:

答案 0 :(得分:3)

这是awk根据NF提取的/(字段数)计算的量身定制的工作:

awk -F/ 'NF != 7' file

//a/b/as/d/e/
//af/y/x/f/e/

NF==7表示一行中有6个斜杠(分隔符)。

答案 1 :(得分:2)

将grep与-v(反向匹配)标志一起使用,以删除匹配/的6个外观的行。假设您的文件位于@ /tmp/test.txt,此命令将起作用:

grep -Ev "^[^\/]*(\/[^\/]*){6}$" /tmp/test.txt

我刚用你的示例输入测试了它:

$ grep -Ev "^[^\/]*(\/[^\/]*){6}$" /tmp/test.txt
//a/b/as/d/e/
//af/y/x/f/e/