我有一个输出:
--
out1
--
out2
--
out3
我想得到输出:
out1
out2
out3
我想过使用:
tr '--' ''
但它不承认' - '是我要替换的第一个字符串。我该如何解决这个问题?
答案 0 :(得分:7)
为什么不使用grep -v "^--$" yourfile.txt
?
答案 1 :(得分:6)
cat file | sed '/^--/d'
答案 2 :(得分:2)
使用awk的另一种方式
awk '!/^--$/' file
答案 3 :(得分:0)
使用tr
可以做的最好的事情是删除连字符留空行。使用sed
Amro 的答案是做你想要的最好的方法。重要的是要记住tr
处理字符列表而不是多字符字符串,因此在参数中放置两个连字符毫无意义。
$ tr -d "-" textfile
out1
out2
out3
但是,为了让tr
处理连字符和其他字符,您必须使用--
终止选项或将连字符放在第一个字符后面。假设你想摆脱连字符和字母o:
$ tr -d "-o" textfile
tr: invalid option -- 'o'
Try `tr --help' for more information.
$ tr -d -- "-o" textfile
ut1
ut2
ut3
$ tr -d "o-" textfile
ut1
ut2
ut3
当字符列表位于变量中时,使用--
选项终止符通常是个好主意,因此不良数据不会不必要地创建错误。对于tr
以外的命令也是如此。
tr -d -- $charlist $file
答案 4 :(得分:-1)
您也可以使用grep
执行相同的操作:
cat filename |grep -v "\--"