同様の多くのテキスト行から2つの列間のタブ文字を削除する方法は?

同様の多くのテキスト行から2つの列間のタブ文字を削除する方法は?

デフォルトでは、以下の例と同じ1/2百万行のテキストを含む書式を設定する文書があります。次のように2文字間のタブを削除する必要があります。

rs207460002 26  15579   T   A
rs207459997 26  15615   G   C
rs527236190 26  15637   T   C

次のようになります。

rs207460002 26  15579   TA
rs207459997 26  15615   GC
rs527236190 26  15637   TC

どんな解決策でも大変感謝します!

注:これは5つのタブ列です。

ベストアンサー1

他のawk方法:

awk '{cpy=$NF; NF--; print $0 cpy }' OFS='\t' infile

これは最後のフィールドのコピーを$NF変数という名前にcpyNF--、現在の入力行から最後のフィールドを削除します。その後、その後ろの行を$0印刷します。指定$0cpyOFS='\t'酸素出力F生産するS分割ツール。

またはsed:

sed 's/\t\([A-Z]\)$/\1/' infile

これはabで一致するグループをキャプチャし、各行の\t末尾に単一のアルファベット文字をキャプチャし、一致するアルファベット文字のみを逆に参照し、\1代替部分では文字と\tabのみを削除します。

おすすめ記事