在每个单词后添加逗号

时间:2015-03-11 10:37:41

标签: linux shell sed escaping comma

我有一个变量(名为$ document_keywords),其中包含以下文字:

Latex document starter CrypoServer

我想在每个单词之后添加逗号,而不是在最后一个单词之后。所以,输出会变成这样:

Latex, document, starter, CrypoServer

任何人帮我实现上述输出。

的问候, ANKIT

4 个答案:

答案 0 :(得分:5)

为了保留空格,我会像这样使用sed:

echo "$document_keywords" | sed 's/\>/,/g;s/,$//'

其工作原理如下:

s/\>/,/g   # replace all ending word boundaries with a comma -- that is,
           # append a comma to every word
s/,$//     # then remove the last, unwanted one at the end.

然后:

$ echo 'Latex document starter CrypoServer' | sed 's/\>/,/g;s/,$//'
Latex, document, starter, CrypoServer
$ echo 'Latex   document starter CrypoServer' | sed 's/\>/,/g;s/,$//'
Latex,   document, starter, CrypoServer

答案 1 :(得分:3)

正常的sed给了我预期的输出,

sed 's/ /, /g' filename

答案 2 :(得分:2)

使用BASH字符串替换:

document_keywords='Latex document starter CrypoServer'
echo "${document_keywords//[[:blank:]]/,}"
Latex,document,starter,CrypoServer

sed

echo "$document_keywords" | sed 's/[[:blank:]]/,/g'
Latex,document,starter,CrypoServer

tr

echo "$document_keywords" | tr '[[:blank:]]/' ','
Latex,document,starter,CrypoServer

答案 3 :(得分:2)

您可以将awk用于此目的。使用for循环并在任何char之后添加,,除了最后一次出现(当i == NF时)。

$ echo $document_keywords | awk '{for(i=1;i<NF;i++)if(i!=NF){$i=$i","}  }1'