ファイルテキストをファイル名とマージする

ファイルテキストをファイル名とマージする

2つのテキストファイルがあります。最初の「file1.txt」の内容は次のとおりです。

Apple
Orange
Banana

2番目のファイル「file2.txt」の内容は次のとおりです。

monday
tuesday
wednesday

私はそれらを1つのファイルに結合したいと思います。結果は次のとおりです。

Apple       File1.txt
Orange      File1.txt
Banana      File1.txt
monday      File2.txt
tuesday     File2.txt
wednesday   File2.txt

ベストアンサー1

これは非常に些細なことですawk

$ awk '{print $0,FILENAME}' File*.txt
Apple File1.txt
Orange File1.txt
Banana File1.txt
monday File2.txt
tuesday File2.txt
wednesday File2.txt

入力行とファイル名の間にスペースの代わりにタブが必要な場合は、-v OFS='\t'コマンドラインに追加して出力フィールド区切り記号(OFS)を設定します。

awk -v OFS='\t' '{print $0,FILENAME}' File*.txt

または以下を使用してください。

awk '{print $0 "\t" FILENAME}' File*.txt

ファイル名に=文字がないとします。ファイル名に文字が含まれていないことを保証できない場合は、=次のように変更できます。

awk '{print $0 "\t" substr(FILENAME, 3)}' ./File*.txt

少なくともGNUでは、ファイル名に有効な文字を形成しないバイトが含まれていると警告が表示されますが((使用awkロケールCLC_ALL=C awk...

おすすめ記事