csv - 向csv文件问题中的每一列添加双引号的脚本

标签 csv unix awk sed addition

我有一个包含 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/

相关文章:

python - 在Python中从大型csv数据文件中提取几行数据的有效方法

c - 无法在 c 中使用 exec 和 makeargv 运行 ./program

python - 根据公共(public)列合并多个行数不等的文件,形成计数矩阵文件

awk - 使用 awk 从文件中提取段

perl - 查找列中的唯一值并将唯一值替换为数字

windows - Windows 环境下的 csv 查看器,用于 10MM 行文件

c# - 使用 asp.net c# 读取上传的 .csv 文件

c - 我在修补 DWM 时遇到错误,此处不允许使用有关函数定义的内容

shell - Unix shell 中的特殊变量?

python - 读取 csv 文件,其中列名称作为一列单元格值