【发布时间】:2013-06-09 09:29:19
【问题描述】:
我需要帮助编写一个脚本,该脚本将在单列 csv 文件的两个字符之间添加 :。根据我的研究,awk 看起来像是我需要的工具,但我一直在尝试合并两个解决方案,我正在寻求帮助。
我的 csv 列涉及没有分隔符的 MAC 地址
000000000000 111111111111 222222222222我需要将输出转换为
00:00:00:00:00:00 11:11:11:11:11:11 22:22:22:22:22:22我在一个 csv 文件中有大约 1500 个我想转换。
我找到了为每两个字符添加: 的解决方案:
add=000000000000
echo $add | awk '{for(i=1;i<=length($0);i+=2){printf("%s:",substr($0,i,2))}}'|awk '{sub(/:$/,"")};1'
00:00:00:00:00:00
我还发现了一个将从第 1 列读取的示例:
awk -F "\"*,\"*" '{print $1}' myfile.csv
但是,我需要帮助阅读列中的每一行,应用脚本添加 :,然后将文件写入第 2 列或一个全新的文件,这对我来说并不重要。
【问题讨论】:
-
另外一点:尽管到目前为止发布的解决方案适用于测试用例,但实际的 MAC 地址是十六进制的,因此示例显示
[0-9](在 sed、awk 或 perl 中)的任何地方都需要成为[0-9a-fA-F]。