Linux 在每个单词后加逗号

Linux 在每个单词后加逗号,linux,shell,sed,escaping,comma,Linux,Shell,Sed,Escaping,Comma,我有一个变量(称为$document_keywords),其中包含以下文本: Latex document starter CrypoServer 我想在每个单词后面加逗号,而不是在最后一个单词后面。因此,输出将如下所示: Latex, document, starter, CrypoServer echo "$document_keywords" | sed 's/\>/,/g;s/,$//' 任何人都可以帮助我达到以上的效果 问候,, Ankit使用BASH字符串替换: docu

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

Latex document starter CrypoServer
我想在每个单词后面加逗号,而不是在最后一个单词后面。因此,输出将如下所示:

Latex, document, starter, CrypoServer
echo "$document_keywords" | sed 's/\>/,/g;s/,$//'
任何人都可以帮助我达到以上的效果

问候,,
Ankit使用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

为此,您可以使用
awk
。对使用
循环,并在任何字符后添加一个
,上次出现时除外(当i==NF时)


$echo$document_关键字| awk'{for(i=1;i为了保留给定的空白,我使用sed如下:

Latex, document, starter, CrypoServer
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.
然后:


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

sed 's/ /, /g' filename

请在提问时发布您解决问题的尝试谢谢您的帮助。如何跳过以下文本中的“()”?在Latex document starter Safe(R)CrypoServer之前Latex document starter Safe(R)CrypoServer之后Latex document starter Safe(R)CrypoServer某种程度上取决于您希望跳过逗号的确切位置。对于这种特殊情况,您可以使用
sed's/\([^[:space:])]\)\([[:space:][\)/\1、\2/g'
或者,如果您知道没有选项卡或类似选项卡,
sed's/\([^)]\)/\1、/g'
。对于一般的答案,我必须知道您的输入是按照什么精确的规则构造和处理的。