我有这个文件
/sauga/pratybos/NAT.ppt
/
/sauga/pratybos/SNMP.ppt
/
/
/
/
/
/
/
/
/favicon.ico
/
/
/
/
/sauga/pratybos/NAT.ppt
/
/
/os/chap07_files/slide0018.htm
/
/
/
/
/
/
/
/
/
/
/sauga/pratybos/NAT.ppt
/
/
/
http://www.google.com/
http://www.google.com/
/
/
/
/
我希望仅在没有文字的情况下删除/
所以我的输出应该是
/sauga/pratybos/NAT.ppt
/sauga/pratybos/SNMP.ppt
/favicon.ico
/sauga/pratybos/NAT.ppt
/os/chap07_files/slide0018.htm
/sauga/pratybos/NAT.ppt
http://www.google.com/
http://www.google.com/
我可以像这样轻松完成
awk '{gsub("/", "");print}' 1a.txt > a.txt
但随后将删除所有/
是否可以在shell中执行此操作?
答案 0 :(得分:4)
这应该返回您想要的输出:
sed '/^\/$/d' infile > outfile
或:
sed -i.bak '/^\/$/d' infile
在拍摄备份副本时进行就地编辑。
答案 1 :(得分:4)
您可以使用grep -v
仅选择不是“/”的行:
grep -v '^/$' 1a.txt > a.txt
编辑,感谢格伦杰克曼评论!:
这个命令的更简单变体与-x
选项完全匹配整个行,如^
... $
正则表达式:
grep -vx / 1a.txt > a.txt
答案 2 :(得分:3)
您可以使用grep -v
:
grep -Ev '^ */ *$' file
/sauga/pratybos/SNMP.ppt
/favicon.ico
/sauga/pratybos/NAT.ppt
/os/chap07_files/slide0018.htm
/sauga/pratybos/NAT.ppt
http://www.google.com/
http://www.google.com/
如果/
周围没有间隔,请使用:
grep -vx '/' file
或使用awk
:
awk '!/ *\/ *$/' file
/sauga/pratybos/SNMP.ppt
/favicon.ico
/sauga/pratybos/NAT.ppt
/os/chap07_files/slide0018.htm
/sauga/pratybos/NAT.ppt