【发布时间】:2015-05-21 14:15:48
【问题描述】:
我想处理以下文件:
01234000000000000000000+000000000000000000+
02586000000000000000000+000000000000000000-
12345000000000000000000+000000000000000000-
12122000000000000000000+000000000000000000+
我想把上面的文件转换成:
01234,000000000000000000+,000000000000000000+
02586,000000000000000000+,000000000000000000-
12345,000000000000000000+,000000000000000000-
12122,000000000000000000+,000000000000000000+
输入文件分别有固定宽度的 5,19,19 列。
我想用linux命令解决。
我尝试了下面的命令,但它不起作用:(
awk 'BEGIN{FIELDWIDTHS="5 19 19";OFS=",";}{$1="$1,$2,$3"}' data.txt
在 ubuntu 14.04 LTS 桌面操作系统上执行上述命令,输出为空(空白)。
【问题讨论】:
-
如果你告诉我们
it is not working,例如语法错误、核心转储、不正确的输出、无输出等,并向我们展示不需要的输出和/或错误消息,并包括操作系统和工具版本。 -
@EdMorton 我已按照建议更新了问题。感谢您的宝贵反馈,我一定会遵循您的建议
-
如果你真的
print输出会有帮助。 -
现在你已经添加了声明
the output was nothing(blank),我们可以告诉你这是因为你没有指定print(例如1在脚本末尾)。我们还要指出$1="$1,$2,$3"正在为$1分配一个固定字符串,而您尝试做的事情将写成$1=$1","$2","$3但在 awk 中执行此操作的正确方法是执行$1=$1和 awk将自动为您重新编译记录。之后,如果/当仍然失败时,我们只需要弄清楚您使用的是哪个 awk 版本,因此您也应该立即包含该信息。