linux中如何在多个单词前添加字符

linux中如何在多个单词前添加字符,linux,bash,Linux,Bash,这是一个包含许多单词的文本文件,每个单词之间用空格或换行符分隔。 现在我想在每个字符前面添加一个字符,如“#”“$”@, 我发现一个接一个的做这个工作会花费太多时间, 在bash中有更好的方法吗 使用sed,您可以说: sed 's/\b\w/#&/g' inputfile 这将在每个单词之前附加。使用sed,您可以说: sed 's/\b\w/#&/g' inputfile 这将在每个单词之前添加。尝试使用sed sed -r 's/([^ ]+)/@\1/g' file

这是一个包含许多单词的文本文件,每个单词之间用空格或换行符分隔。 现在我想在每个字符前面添加一个字符,如“#”“$”@, 我发现一个接一个的做这个工作会花费太多时间,
在bash中有更好的方法吗

使用
sed
,您可以说:

sed 's/\b\w/#&/g' inputfile

这将在每个单词之前附加

使用
sed
,您可以说:

sed 's/\b\w/#&/g' inputfile

这将在每个单词之前添加

尝试使用
sed

sed -r 's/([^ ]+)/@\1/g' file
或者更简单地说

sed -r 's/[^ ]+/@&/g' file

样本输入

abc def pqr-stu xyz
输出

@abc @def @pqr-stu @xyz

尝试使用
sed

sed -r 's/([^ ]+)/@\1/g' file
或者更简单地说

sed -r 's/[^ ]+/@&/g' file

样本输入

abc def pqr-stu xyz
输出

@abc @def @pqr-stu @xyz

如果出现
abc-def
,这将失败,我只想一个单词,结果将是
#abc-#def
。OP说单词之间只有空格、换行符或换行符。在这种情况下,将\w替换为\s会产生输出
\abc\def
。我需要是
\S+
如果出现
abc def
,这将失败,我只想一个单词,结果将是
\abc-\def
。OP说单词之间只有空格、换行符或换行符。在这种情况下,将\w替换为\s会产生输出
\abc\def
。我需要成为
\S+
好极了,谢谢你,兄弟!太好了,谢谢你,兄弟!