次の表があります。
name something
1 100036498|F|0--20:T>G something
2 100036501|F|0--44:C>T something
3 100036501|F|0-44:C>T-44:C>T something
4 100036508|F|0--66:T>G something
5 100036508|F|0-66:T>G-66:T>G something
6 100036511|F|0-19:G>A-19:G>A something
7 100036516|F|0--15:T>G something
8 100036516|F|0-15:T>G-15:T>G something
... ....
私の問題を理解しやすくするために行番号を追加しました。 2行と3行、4行と5行、7行と8行など、同じ番号で始まる行ペアがあります。 1行、6行など独自の行もあります。ペアのある行だけを維持したいです。つまり、ペアのない行を削除して次の表を作成したいと思います。
name something
2 100036501|F|0--44:C>T something
3 100036501|F|0-44:C>T-44:C>T something
4 100036508|F|0--66:T>G something
5 100036508|F|0-66:T>G-66:T>G something
7 100036516|F|0--15:T>G something
8 100036516|F|0-15:T>G-15:T>G something
... ....
私はLinuxコマンドに似た反対のコマンドが欲しいユニーク最初の列の数字のみが考慮され、記号の後の残りの数字は考慮されません。|。
何をすべきか知っていますか?
以下には、スペースで区切られた列があり、簡単にコピーできるようにヘッダーを持たない同じ最初のテーブルがあります。
100036498|F|0--20:T>G something
100036501|F|0--44:C>T something
100036501|F|0-44:C>T-44:C>T something
100036508|F|0--66:T>G something
100036508|F|0-66:T>G-66:T>G something
100036511|F|0-19:G>A-19:G>A something
100036516|F|0--15:T>G something
100036516|F|0-15:T>G-15:T>G something
答え1
以下は、複数回繰り返される行を維持するソリューションですawk
。行を2回だけ繰り返すには、次のよう>1
に変更します。==2
awk -F'|' 'NR==FNR{s[$1]++;next} (s[$1]>1)' infile infile
100036501|F|0--44:C>T something
100036501|F|0-44:C>T-44:C>T something
100036508|F|0--66:T>G something
100036508|F|0-66:T>G-66:T>G something
100036516|F|0--15:T>G something
100036516|F|0-15:T>G-15:T>G something