这是我的文件,其中包含三列并用“\t”分隔,第二列的分隔符是空白
1 a b tom
2 a b c sim
3 a mary
4 o l shey
5 c bob
Run Code Online (Sandbox Code Playgroud)
我想获取第二列包含多个元素的第一个文件
1 a b tom
2 a b c sim
4 o l shey
Run Code Online (Sandbox Code Playgroud)
然后我想得到第二个这样的文件
1 a tom
1 b tom
2 a sim
2 b sim
2 c sim
4 o shey
4 l shey
Run Code Online (Sandbox Code Playgroud)
事实上,我已经尝试过了
awk -F\\t 'BEGIN {OFS=FS} {n=split($2,aa," ");for (i=1;i<=n;i++) {$2=aa[i]; printf "%s\n" $0 }}'
Run Code Online (Sandbox Code Playgroud)
但看起来没用。你能给我一些建议吗?谢谢。
$ awk 'NF>3' file
1 a b tom
2 a b c sim
4 o l shey
$ awk -v OFS='\t' 'NF>3{for (i=2;i<NF;i++) print $1, $i, $NF}' file
1 a tom
1 b tom
2 a sim
2 b sim
2 c sim
4 o shey
4 l shey
Run Code Online (Sandbox Code Playgroud)
至于为什么你的代码不起作用 - 最明显的问题是当你说并显示它由空格分隔时split($2,aa,",")试图以逗号分隔。$2