Linux 在每个单词后加逗号
我有一个变量(称为$document_keywords),其中包含以下文本: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
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'
。对于一般的答案,我必须知道您的输入是按照什么精确的规则构造和处理的。