【发布时间】:2021-01-17 22:14:01
【问题描述】:
大家好,我是 shell 编码的初学者。每天我需要将文件的数据转换为另一种格式,我通常使用文本编辑器手动完成。但我经常犯错误。所以我决定编写一个可以为我完成工作的简单脚本。文件内容是这样的
/release201209
a1,a2,"a3",a4,a5
b1,b2,"b3",b4,b5
c1,c2,"c3",c4,c5
到这里:
a2>a3
b2>b3
c2>c3
脚本应该忽略第一行并打印用'>'分隔的第二个和第三个值 我已经完成了一半,这是我的代码
#!/bin/bash
cat $1 | sed '1d' | cut -d, -f2-3 | tr -d '"' > $2
它运行良好,直到我发现它不适用于 a3 中包含逗号的数据类型,例如:
data,VERSION,"FUNDS.TRANSFER,ASS.VERS.TIERS.BOP",,
哪个返回
VERSION>FUNDS.TRANSFER
代替
VERSION>FUNDS.TRANSFER,ASS.VERS.TIERS.BOP
你能帮我更新一下吗?谢谢
【问题讨论】:
-
基于this answer
awk -vFPAT='([^,]*)|("[^"]+")' '{print $2 ">" $3}' file会做到的 -
返回 awk: invalid -v option
-
顺便说一句,那是useless
cat,你应该quote your variables。