Shell脚本 - 逗号后的新行?

时间:2011-11-07 01:01:25

标签: linux shell line new-operator

我有一个我编写的shell脚本,它从一个位置抓取一个名称列表,每个名称用逗号分隔,< - 我想知道是否有任何我可以编写的名称列表存储在文本文件中以在每个逗号后缩进到新行?

例如,存储在文本文件中的名称列表如下所示:

"Red", "Blue", "Green"

我希望他们看起来像这样:

Red
Blue
Green

数据从网站上的html代码中提取出来,因此如果有可能至少将它们格式化为新行,那么它们就会有引号和逗号,这样会很棒。谢谢你的帮助。

5 个答案:

答案 0 :(得分:3)

假设逗号分隔日期在变量$ data中,您可以通过将$ IFS(列表分隔符变量)设置为','并使用for循环来告诉bash将其拆分:

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 :(得分:3)

只需使用sed

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

见下面的命令行:

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

答案 4 :(得分:0)

\ n适用于新行。比如“Red \ n”,“Blue \ n”,“Green \ n”