如何使用tr替换' - '字符串

时间:2009-10-16 23:10:51

标签: linux bash shell

我有一个输出:

--
out1
--
out2
--
out3

我想得到输出:

out1
out2
out3

我想过使用:

tr '--' ''

但它不承认' - '是我要替换的第一个字符串。我该如何解决这个问题?

5 个答案:

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