Awk 如何使用with SED编辑Linux文件中的特殊字符?

Awk 如何使用with SED编辑Linux文件中的特殊字符?,awk,sed,Awk,Sed,文件名:File.txt 内容: 结果应该随之而来, "Vignesh", "Mani", "Bani", "Ravi" 有人能帮我吗?我怎样才能得到预期的结果 我试过这个命令 sed -e 's/^ /" ",/g' File.txt 它不起作用了。请告诉我。我会使用awk: awk -v OFS=", " -v q='"' '{for(i=1;i<=NF;i++)$i=q $i q}7' file 第一种解决方案:如果您的实际输入文件与所示示例相同,则以下内容可能会对您有所帮助

文件名:File.txt 内容:

结果应该随之而来,

"Vignesh", "Mani", "Bani", "Ravi"
有人能帮我吗?我怎样才能得到预期的结果

我试过这个命令

 sed -e 's/^ /" ",/g' File.txt

它不起作用了。请告诉我。

我会使用awk:

awk -v OFS=", " -v q='"' '{for(i=1;i<=NF;i++)$i=q $i q}7' file
第一种解决方案:如果您的实际输入文件与所示示例相同,则以下内容可能会对您有所帮助

awk -v s1='"' -v s2=',' '{gsub(/ /,s1 s2 OFS s1);gsub(/^|$/,s1)} 1' Input_file
第二种解决方案:


这可能适用于GNU sed:

sed 's/\S\+/"&"/g;s/\s\+/, /g' file

用双引号将非空格括起来。用逗号后跟空格替换每组空格

你忘了,我没有。添加-如果OP不小心,我会使脚本不可移植,并且能够损坏输入文件,并且问题中没有迹象表明OP希望更改输入文件,而不仅仅是输出修改后的文本。@EdMorton非常感谢。它真的很棒,满足了我的预期结果。非常感谢。太完美了。
awk -v s1='"' -v s2=',' '{gsub(/ /,s1 s2 OFS s1);gsub(/^|$/,s1)} 1' Input_file
awk -v s1='"' 'BEGIN{OFS=s1", "s1} {gsub(/^|$/,s1);$1=$1} 1' Input_file
sed 's/\S\+/"&"/g;s/\s\+/, /g' file