我使用粘贴命令合并了两个配置文件- paste -d, file1 file2>但是我在file1中有两个值,file2中有a=b,c和a=b,c,d的值。在csv文件中,c和d被显示在一个单独的字段中,需要帮助修复它,以便在单个字段中a=b,c应该显示。尝试过的方法有awk '{gsub(/,/,")};1' file1>但它显示为a=bc而不是a=b,c提前感谢!!
尝试过的方法有awk '{gsub(/,/,")};1' file1>但它显示为a=bc而不是a=b,c并试图逃避逗号/,但没有工作
没有file1和file2的例子,我希望我给你一个真正的问题的答案。我给出了三个解决方案,你可以改变一个解决方案来满足你的要求。
用<(subcommand)
paste
前面的完整行用双引号括起来paste -d, <(sed 's/.*/"&"/' file1) <(sed 's/.*/"&"/' file2)
在paste
中使用特殊字符,paste
完成后再修复。
paste -d'r' file1 file2 | sed -r 's/([^r]*)r(.*)/"1","2"/'
不要用paste
,用awk
连行
awk 'NR==FNR {a[FNR]=$0;next} {printf(""%s","%s"n",a[FNR],$0)}' file1 file2
编辑:当你在你的数据中使用双引号时,你必须首先复制这些引号。就像
paste -d, <(sed 's/"/""/g; s/.*/"&"/' file1) <(sed 's/"/""/g; s/.*/"&"/' file2)
或
paste -d'r' file1 file2 | sed -r 's/"/""/g; s/([^r]*)r(.*)/"1","2"/'