Linux 将逗号分隔文件转换为管道

标签 linux shell unix awk

我在 Linux 中有一个文件,用逗号分隔,字符串字段用双引号 "括起来,我需要将它们转换为管道分隔符,请分享您的输入。

示例:

输入:

"2017-09-30","ACBD,TVF","01234",NULL,18,NULL,"686091802","BANK OF ABCD, LIMITED, THE",790456

输出:

2017-09-30|ACBD,TVF|01234|NULL|18|NULL|686091802|BANK OF ABCD, LIMITED, THE|790456

提前致谢...

谢谢

最佳答案

这是使用 gnu awk 使用 FPAT 变量的解决方案:

awk -v OFS='|' -v FPAT='"[^"]*"|[^,]*' '{
   for (h=1; h<=NF; h++) printf "%s%s", $h, (h < NF ? OFS : ORS)
}' file

"2017-09-30"|"ACBD,TVF"|"01234"|NULL|18|NULL|"686091802"|"BANK OF ABCD, LIMITED, THE"|790456

Working Code Demo

关于Linux 将逗号分隔文件转换为管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144075/

相关文章:

linux - 作为 bash 脚本调用时如何替换命令名称?

linux - 以 --rfc-3339 格式增加时间的 shell 脚本

bash - 如何从 `which` 的结果中打开父目录?

linux - 在 unix 中处理日期格式

linux - 使用 sed 反向 IP 地址格式

c - linux猫: No such file or directory

linux - 如何让 Chef 重新加载全局路径

python - 阅读命令的反馈?

linux - 为 Linux STDIN 添加递归命令

unix - 为什么 OpenSSH RequestTTY 会导致 stderr 重定向到 stdout?