cat
私は複数の固定行を持つ複数のファイルを処理できるbash one-linerを探しています。
ファイル1.txt:
file1 line 1
file1 line 2
ファイル2.txt
file2 line 1
file2 line 2
それから私は次のようなものを探しています。
cat-with-strings foo file1.txt bar file2.txt baz
生産量
foo
file1 line 1
file1 line 2
bar
file2 line 1
file2 line 2
baz
標準のLinuxツール(sed、awk、catなど)を使用してbash 1行でこれを行う方法いいえ、または ?保存するファイルを作成してくださいfoo
。bar
baz
答え1
私の携帯電話でこの内容を入力したので、簡単でテストされていない回答についてお詫び申し上げます。
もちろん、すべてを1つのファイルのように接続できます。
cat <( echo foo ) file1.txt <( echo bar ) file2.txt <( echo baz )
答え2
sh -c 'while [ $# -gt 0 ] ; do echo "$1" ; cat "${2:-/dev/null}" ; shift 2 2>/dev/null; done' - foo file1 bar file2 baz
一般的にこれをラインで要求することは非常に愚かなことです。シェル関数やファイルに入れると、それが行かどうか気になりますか?
答え3
すべての Unix システムのすべてのシェルで 1 つのコマンドで awk を使用します。
$ awk 'FNR==1{print x} 1; END{print x}' x='foo' file1 x='bar' file2 x='baz'
foo
file1 line 1
file1 line 2
bar
file2 line 1
file2 line 2
baz