【发布时间】:2010-11-15 00:10:54
【问题描述】:
我正在编写一个bash 脚本来从 procmail 获取数据并生成一个输出 CSV 文件。
最后,我需要从这个翻译:
---label1: 123456
---label2: 654321
---label3: 246810
---label4: 135791
---label5: 101010
到这里:
label1,label2,label3,label4,label5
123456,654321,246810,135791,101010
我可以使用ruby 脚本轻松完成此操作,但我不想调用bash 脚本以外的其他脚本。所以我想用sed 来做这件事。
我可以像这样提取我想要的数据:
sed -nr 's/^---(\S+): (\S+)$/\1,\2/p'
但我不知道如何转置它。你能帮帮我吗?
【问题讨论】:
-
我不明白你不使用 Ruby 的原因。您想避免使用脚本语言,因此使用了两种。你的脚本会不断增长,在你知道之前,到处都会有 for 循环、tr、awk 和 sed 调用。并且使用适当的 CSV 库也可能会有所帮助,如果不是现在,那么在您的数据中有引号或逗号的下一个工作中。我不知道 Ruby,但 Perl 有一个。
-
问题是我不想要一个不同的文件,只需要一个 bash 脚本来进行处理。但我找到了一种在 bash 脚本中使用 ruby 作为 oneliner 的方法。