テキストファイルの特定の列(私の場合は列4)が新しいテキストファイルの最後の列として追加されるループを作成したいと思います。 4番目の列をインポートし、新しいテキストファイル(タブで区切られた列)に追加したい合計500個のテキストファイル(V1-V500)があります。すべてのテキストファイルの行数は同じです。さらに、追加された列のヘッダーには、その列が最初に指定されたテキストファイルのファイル名を含める必要があります。私はawkとforループを使ってコマンドラインを設定してみましたが、どのコマンドも機能しません。以前のコマンドラインに基づいてコマンドラインを試しました。郵便はがき。私は利用可能なGNUツールを使用してLinuxで作業しています。
例: V1 テキストファイル
header1 header2 header3 header4
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
V2テキストファイル:
header1 header2 header3 header4
17 25 21 29
18 26 22 30
19 27 23 31
20 28 24 32
新しいテキストファイル:
V1 V2
13 29
14 30
15 31
16 32
ご協力ありがとうございます!
ベストアンサー1
awk
すべてのファイルを解析します。
awk -F'\t' -v OFS='\t' '{
x = (FNR==1 ? FILENAME : $4)
a[FNR] = (FNR==NR ? x : a[FNR] OFS x)
}
END {
for (i=1;i<=FNR;i++) print a[i]
}' V{1..500}
x
a
これは私たちが構築するすべてのラインと新しいラインにつながるものです。どちらも割り当てを使用します。条件式。FNR
現在の入力ファイルの行番号とNR
総行数。FNR==NR
「最初のファイルを解析するとき」を意味します。また、タブで区切られた入力と出力を想定しました。