我有一个变量(名为$ document_keywords),其中包含以下文字:
Latex document starter CrypoServer
我想在每个单词之后添加逗号,而不是在最后一个单词之后。所以,输出会变成这样:
Latex, document, starter, CrypoServer
任何人帮我实现上述输出。
的问候, ANKIT
答案 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'