awkでファイルを分割する

awkでファイルを分割する

これは、「\ t」で区切られた3つの列を含む私のファイルです。 2 番目の列の区切り文字は空です。

       1   a b    tom
       2   a b c  sim
       3   a      mary
       4   o l    shey   
       5   c      bob

2番目の列に複数の要素を含む最初のファイルをインポートしたいと思います。

       1   a b    tom
       2   a b c  sim
       4   o l    shey 

その後、このような2番目のファイルを取得したいと思います。

       1    a     tom
       1    b     tom
       2    a     sim
       2    b     sim
       2    c     sim
       4    o     shey
       4    l     shey

実は私も試してみました。

awk -F\\t 'BEGIN {OFS=FS} {n=split($2,aa," ");for (i=1;i<=n;i++) {$2=aa[i]; printf "%s\n" $0 }}'

しかし、それは役に立たないようです。いくつかの提案をすることができますか?ありがとうございます。

ベストアンサー1

$ 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

コードが機能しない理由の最も明白な問題は、スペースで区切られていると言って表示するときにカンマで区切るようにするsplit($2,aa,",")ことです。$2

おすすめ記事