2009-10-16 51 views
2

我有一個輸出:如何使用TR來代替 ' - ' 字符串

-- 
out1 
-- 
out2 
-- 
out3 

我想要得到的輸出:

out1 
out2 
out3 

我想用的:

tr '--' '' 

但它不承認' - '是我想要替換的第一個字符串。我該如何解決這個問題?

回答

6
cat file | sed '/^--/d' 
+5

不需要貓。 sed'/^-/d'文件 – ghostdog74 2009-10-17 01:25:05

+0

而sed的'd'命令非常不習慣。傑瑞的grep解決方案將會對大多數人更爲熟悉。 – 2009-10-17 03:19:57

7

爲什麼不使用grep -v "^--$" yourfile.txt

2

使用awk

awk '!/^--$/' file 
+0

或'awk'$ 0!=「 - 」'file'。 – 2014-04-15 21:55:33

0

你可以用tr做的最好的一種方法是刪除留下的空行的連字符。最好的辦法做你想做的是Amro的回答使用sed。請注意,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 
-1

你可以做同樣的事情grep還有:

cat filename |grep -v "\--" 
+0

無用的'貓'。 (不,我不是downvoter)。 – 2014-04-15 13:43:59