删除" /"文件shell中的符号

时间:2015-04-23 12:56:55

标签: shell

我有这个文件

/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中执行此操作?

3 个答案:

答案 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