前/間/後に複数の固定行を持つ"cat"ファイルを含める方法は?

前/間/後に複数の固定行を持つ"cat"ファイルを含める方法は?

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行でこれを行う方法いいえ、または ?保存するファイルを作成してくださいfoobarbaz

答え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

関連情報