我有一个相当大的文本文件,其中包含如下所示的字符串:
//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/
最有效的方法是什么?
答案 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/