2017-08-02 90 views
0

我想在用逗號分隔的不同行中使用bash腳本打印不同的單詞。在逗號分隔的不同行上打印每個單詞

ent0 
ent4 
ent1,ent5 
ent2,ent6 
ent3,ent7 
ent29,ent30 

我想打印不同行中的每個單詞。

+3

這是不清楚你在問什麼。這是輸入嗎?那麼期望的輸出是什麼?還是輸出?輸入是什麼樣的?你爲了解決問題而編寫的代碼在哪裏?你有什麼具體問題?它必須是Bash嗎?用逗號分隔什麼?線條或文字?措辭含糊不清。 –

+0

喜是輸入,我需要的輸出是這樣的 –

+0

輸入:ENT0 ent4 ENT1,ent5 ENT2,ent6 ent3,ent7 ent29,ent30 –

回答

1

使用tr

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | tr ',' '\n' 

使用sed

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | sed 's/,/\n/g' 

兩者都會產生,

ent0 ent4 ent1 
ent5 ent2 
ent6 ent3 
ent7 ent29 
ent30 

編輯:

您的需求不夠清楚。如果你想通過這兩個逗號和空格分割,

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | tr ', ' '\n' 

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | sed 's/\(,\| \)/\n/g;' 

這將產生,

ent0 
ent4 
ent1 
ent5 
ent2 
ent6 
ent3 
ent7 
ent29 
ent30 

如果內容是在一個文件,說input.txt,用它而不是echo

tr ', ' '\n' <input.txt 
0

如果我理解你的問題,你可以用IFSprintf命令替換,例如做很簡單

$ IFS="$IFS,"; printf "%s\n" $(<file.txt) 
ent0 
ent4 
ent1 
ent5 
ent2 
ent6 
ent3 
ent7 
ent29 
ent30 

(不要忘了復位IFS其默認$' \t\n'(空間標籤換行)完成後,你以後可以節省oldifs="$IFS",然後運行命令,並設置IFS="$oldifs"作爲一種簡單的復位)