2014-04-12 95 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"