2014-04-12 59 views
2

我用下一个命令切-f参数工作不正常

out=cat /path/myFile | cut -f2,3 -d ',' | sed -r -e 's/,/ /g 

MYFILE的样子:

a1a1a1a1,b1b1b1b1,c1c1c1c1,d1d1d1d1d1 
a2a2a2a2,b2b2b2b2,c2c2c2c2,d2d2d2d2d2 
a3a3a3a3,b3b3b3b3,c3c3c3c3,d3d3d3d3d3 

后,我会得到:

b1b1b1b1 c1c1c1c1 
b2b2b2b2 c2c2c2c2 

,但结果是在写一行:

b1b1b1b1 c1c1c1c1 b2b2b2b2 c2c2c2c2 ... 

有什么建议吗?

+1

有在你的代码的语法错误,但他们显然只是抄写错误。在''cmd \''上面加上'$(cmd)'。 ['猫'没用](http://partmaps.org/era/unix/award.html)。 'sed'会更有效率,可以用'tr'替换'',' – tripleee

回答

2

也许你说的echo $out没有引号,如果不是正确的

echo "$out" 
+0

哇,非常感谢。这是魔法 ) –

1

你有报价的问题:

out="$(cat /tmp/myfile | cut -f2,3 -d ',' | sed -r -e 's/,/ /g';)" 

作品和$出有:

b1b1b1b1 c1c1c1c1 
b2b2b2b2 c2c2c2c2 
b3b3b3b3 c3c3c3c3 

而且,对于单个字符替换,您可以使用tr

out="$(cat /tmp/myfile | cut -f2,3 -d ',' | tr ',' ' ')" 

然后,要使用它:

echo "$out"