我有一个文件,如下所示
1234|A|B|C|10|11|12
2345|F|G|H|13|14|15
3456|K|L|M|16|17|18
我希望输出为
1234|A
1234|B
1234|C
2345|F
2345|G
2345|H
3456|K
3456|L
3456|M
我已经尝试了下面的脚本。
awk -F"|" '{print $1","$2","$3","$4"}' file.dat | awk -F"," '{OFS=RS;$1=$1}1'
但生成的输出如下所示。
1234
A
B
C
2345
F
G
H
3456
K
L
M
任何帮助都是感激不尽的。
3条答案
按热度按时间ac1kyiln1#
下面这样一个简单的awk过程怎么样:
请勿干扰RS和OFS。
0yg35tkg2#
如果要动态执行此操作,则可以传入所需的字段数,然后从第二个字段开始使用循环。
在脚本中,您可以首先检查字段的数量是否等于或大于传递给脚本的数量(在本例中n=4)
输出量
mqkwyuun3#
# perl -lne'($a,@b)=((split/\|/)[0..3]);foreach (@b){print join"|",$a,$_}' file.dat