【发布时间】:2018-07-10 06:47:35
【问题描述】:
我正在寻找一个简单的控制台解决方案来更改如下所示的文本文件:
...
Gender: M
Age: 46
History: 01305
Gender: F
Age: 46
History: 01306
Gender: M
Age: 19
History: 01307
Gender: M
Age: 19
History: 01308
....
像这样的 csv 文件:
Gender,Age,History
M,46,01305
F,46,01306
M,19,01307
M,19,01308
任何帮助表示赞赏
通过以下解决方案,我收到了此输出。我做错了吗?
awk 'BEGIN{printf "Gender,Age,History%s",ORS;FS=":"}{c++} {sub(/^ */,"",$2);printf "%s%s",$2,(c==3)?ORS:","}c==3{c=0}' data.txt >> 1.csv
Gender,Age,History
M
,37
,00001
M
,37
,00001
M
,41
,00001
【问题讨论】:
-
到目前为止,您尝试了什么?此外,您会发现很多重复的问题与确切要求
:-) -
这可能会有所帮助
awk 'BEGIN{printf "Gender,Age,History%s",ORS} {FS=":";count++} {sub(/^ */,"",$2);printf "%s%s",$2,(cou nt==3)?ORS:","}count==3{count=0}' file -
请注意上面
count中的无意空格。应该删除空格。最好将字段分隔符放在BEGIN块中,如awk 'BEGIN{printf "Gender,Age,History%s",ORS;FS=":"}{c++} {sub(/^ */,"",$2);printf "%s%s",$2,(c==3)?ORS:","}c==3{c=0}' file -
@sjsam 你能再看看吗?我尝试了您的解决方案,它有效,但存在一些问题。如果有必要,我正在使用 OSX shell。非常感谢
-
我对你得到的东西感到困惑,尤其是逗号前的换行符。我不确定这与你使用 OSX 有什么关系。我来研究一下
标签: bash shell csv export-to-csv