139のタブで区切られたファイルがあります.txt
。.txt
そのファイルの名前を使用して各ファイルに列を追加し、最後にすべての.txtファイルを1つのファイルに追加したいと思います。A.txt
、、ファイルがありB.txt
、C.txt
各ファイルには次の列があります。
chrM 10458 C T
chrM 13960 C T
chrM 14173 T C
chr1 920552 G A
私は次のようなものが必要です
A chrM 10458 C T
A chrM 13960 C T
A chrM 14173 T C
A chr1 920552 G A
B chr1 1350208 G A
B chr1 1447367 T G
B chr1 1909310 G A
B chr1 2172675 G C
C chr1 2846623 C T
C chr1 3057894 G A
C chr1 3096688 G C
C chr1 3154525 G A
私のためにそうすることができますか?
ありがとう
答え1
少しgrep
トリッキーですが。sed
プレフィックスファイル名(「.txt:」)の一部を空白に変更できます。
grep . *.txt | sed 's/.txt:/ /g'
かなり多くのCPUサイクルを無駄にしますが、ワンショットタイマーの場合は問題にならず、作業は完了です。
答え2
使用awk
とFILENAME
変数
拡張機能を削除するには、次のgsub
機能を使用できます。
awk -F'\t' 'BEGIN{OFS=FS}{gsub(/.txt$/,"",FILENAME); print FILENAME,$0}' *.txt
> MERGE.txt
結果を新しいテキストファイルに保存するには、最後に追加します。