2013-01-15 46 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的文件内容