我有一个包含 4 列的 CSV 文件。例如
1132,John Doe,<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2b414443454f444e6b4c464a424705484446" rel="noreferrer noopener nofollow">[email protected]</a>,3534534543
53213,John Doe,<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d0babfb8beb4bfb590a4b5a3a4feb3bfbd" rel="noreferrer noopener nofollow">[email protected]</a>,51352363126
我想为每个值添加双引号,因此我在 MAC 上使用此脚本:
sed 's/[^,]*/"&"/g' file.csv > file2.csv
我收到了
"1132","John Doe","<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="32585d5a5c565d5772555f535b5e1c515d5f" rel="noreferrer noopener nofollow">[email protected]</a>","3534534543
"
"53213","John Doe","<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="076d686f6963686247736274732964686a" rel="noreferrer noopener nofollow">[email protected]</a>","51352363126
"
所以我得到了新行的最后一个引号,很可能我应该以某种方式删除/r/n ,我尝试过,但我做不到。有任何想法吗?如果我手动填写值,我收到的文件就会发生这种情况,它会按预期工作。
最佳答案
您可以尝试以下操作吗?
awk 'BEGIN{FS=",";RS="\r\n";s1="\"";OFS="\",\""} {$1=$1;$0=s1 $0 s1} 1' Input_file
如果您想保留空行,请尝试以下操作。
awk 'BEGIN{FS=",";RS="\r\n";s1="\"";OFS="\",\""} NF{$1=$1;$0=s1 $0 s1} 1' Input_file
关于csv - 向csv文件问题中的每一列添加双引号的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61803736/