shell) 連番のテキストファイルの内容を連結
Posted: 2018年10月12日(金) 01:13
shell) 連番テキストファイルの内容を連結するワンライナ
こんばんは! お世話になります。
シェル初心者です。シェルの使い方について、質問させてください。環境はbash (OS X) です。
複数のテキストファイルの内容を、改行3つで区切って、連結したいです。
たとえば、ディレクトリ下のファイルが……
ファイル名 テキストの内容
a.txt "ああああ"
b.txt "いいいい"
となっていた場合、"ああああ\n\n\nいいいい" という出力が欲しいです。
"ああああ\n\n\nいいいい\n\n\n"でも妥協できます。
今回は特に、ファイル名が連番で始まるテキストファイルの内容を、改行3つで区切って連結したいです。(ファイル名の例: 0 aaa AAA.txt, 1 bbb BBB.txt など)
bashで連結する方法を考えます。
簡単のため、次のコマンド・オプションは使いたくありません:
・while
・find -exec
以下のように、bashで書いてみました。見よう見まねです。
できればxargsで動作させたいのですが、何とか成功させられないでしょうか。
よろしくお願いします。
[追記] 誤字を修正しました
こんばんは! お世話になります。
シェル初心者です。シェルの使い方について、質問させてください。環境はbash (OS X) です。
複数のテキストファイルの内容を、改行3つで区切って、連結したいです。
たとえば、ディレクトリ下のファイルが……
ファイル名 テキストの内容
a.txt "ああああ"
b.txt "いいいい"
となっていた場合、"ああああ\n\n\nいいいい" という出力が欲しいです。
"ああああ\n\n\nいいいい\n\n\n"でも妥協できます。
今回は特に、ファイル名が連番で始まるテキストファイルの内容を、改行3つで区切って連結したいです。(ファイル名の例: 0 aaa AAA.txt, 1 bbb BBB.txt など)
オフトピック
簡単のため、次のコマンド・オプションは使いたくありません:
・while
・find -exec
以下のように、bashで書いてみました。見よう見まねです。
# ヌル文字区切りでファイルを集める
$ find *.txt -print0 | sort -z -n # 番号順にソートできていることを確認
0.txt1.txt .. 11.txt12.txt ..
$ find *.txt -print0 | sort -z -n | xargs -0 -I{} echo -e $(cat "${}") "\n\n\n"
-bash: ${}: bad substitution
よろしくお願いします。
[追記] 誤字を修正しました