2011-11-07 61 views
1

我有一個我寫的shell腳本,它從一個位置抓取一個名字列表,每個名字用一個逗號分開,< - 我想知道是否有任何東西我可以編寫來使存儲的名字列表在文本文件中縮進每個逗號後面的新行?shell腳本 - 逗號後的新行?

例如是被存儲在文本文件名列表如下所示:

​​

而且我希望他們看起來像這樣:

Red 
Blue 
Green 

的數據會從HTML拉如果有可能至少將他們格式化爲新的行,那麼他們就會在他們身邊留下引號和逗號,這將會很棒。謝謝,如果你幫助。

回答

0

\ n是換新線。如「Red \ n」,「Blue \ n」,「Green \ n」

+0

是的,但因爲我已經從什麼地方拉的數據,這可能使一些尋找每一個逗號,並做了新的生產線? – Aaron

+0

是的,只需搜索逗號的每個實例,然後用\ n – FrozenWasteland

+0

替換即可,但是我想在不帶\ n的文本編輯器中查看結果。 – Aaron

3

假設逗號分隔日期在變量$ data中,您可以通過設置$ IFS(列表分隔符變量)到','並使用for循環:

TMPIFS=$IFS #Stores the original value to be reset later 
IFS=', ' 

echo '' > new_file #Ensures the new file is empty, omit if the file already has contents 

for item in $data; do 
item=${item//'"'/} #Remove double quotes from entries, use item=${item//"'"/} to remove single quotes 
echo "$item" >> new_file #Appends each item to the new file, automatically starts on a new line 
done 

IFS=$TMPIFS #Reset $IFS in case other programs rely on the default value 

這會給你所需格式的輸出,儘管有一個空行。

1
awk -F, '{for(i=1;i<=NF;i++){ print $i;}}' 
3

只使用sed

% echo '"Red", "Blue", "Green"' | sed -e 's/\"//g' -e 's/, /\n/g' 
Red 
Blue 
Green 
1

參見下面的命令行:

kent$ echo '"Red", "Blue", "Green"'|sed 's/, /\n/g' 
"Red" 
"Blue" 
"Green"