2013-01-15 50 views
2

我需要一起管2個命令,第一個命令將輸入​​文件中的XYZ替換爲「,」,然後我需要做另一個替換。未成功嘗試以下內容。pipe命令一起

tr 'XYZ' ',' <input_file | xargs tr ',' ''

什麼管道兩個命令在一起,以正確的方式,其中第二個命令從一個文件需要輸入?

+0

我可能會誤解,但爲什麼兩次調用'tr'?爲什麼不做'tr'XYZ''''? – squiguy

+0

@squiguy - 考慮輸入'A,B,C XYZ D' –

回答

5
tr 'XYZ' ',' <input_file | tr ',' '' 

管道符號|連接第一命令的標準輸出到第二命令的標準輸入。 tr是一個過濾器,這是一個程序,它希望它的輸入出現在標準輸入流上並在標準輸出流上發出其結果。

可以,只要你想盡可能多的這些連接在一起:

tr 'A' 'B' < input_file | tr 'C' 'D' | tr 'E' 'F' | tr 'Z' 'Q' 
+0

'cat input_file | tr'XYZ'','| tr','''' –

+1

[無用的'cat'獎勵。](http://partmaps.org/era/unix/award.html#cat) –

+0

如果你認爲'cat'總是無用的。在這種情況下,cat使命令更具可讀性,從左到右管道一直向下。 –

0

如果你只是想刪除的字符,那麼-d標誌以TR將這樣做沒有必要替換爲''

tr -d 'xyz' < file 

將在stdout中顯示所有x的y和z的文件內容