作为清单 bash 脚本的一部分,我正在检查 SFP 模块并将它们添加到 .csv 文件中。目前的格式如下所示,长度各异:
RO01;1000BaseSX SFP;1000BaseSX SFP
RO02;1000BaseSX SFP;1000BaseSX SFP;1000BaseLX SFP
我的目标是为第一行之后的每一行提供自己的行以及第一行。所以上面的行应该是这样的:
RO01;1000BaseSX SFP
RO01;1000BaseSX SFP
RO02;1000BaseSX SFP
RO02;1000BaseSX SFP
RO02;1000BaseLX SFP
我如何使用文本处理来实现这一目标?
答案1
可能的解决方案是使用awk
:
awk -F";" '{ for (i = 2; i <= NF; i++) { printf("%s;%s\n", $1, $i); } }' file
我们将(字段分隔符)awk -F";"
设置为。然后,对于每一行(记录),我们从字段 2 开始到最后一个字段 ( ):并打印字段 1 和当前字段 ( )。FS
;
NF
for (i = 2; i <= NF; i++)
$i