cat file1 file2
2つのテキストファイルをマージします。しかし、それらの間に1〜2行の区切り文字を追加するには、最初のファイルを開き、最後に行を追加する必要がありますか********************************
、それとも2番目のファイルを開き、一番上に行を追加する必要がありますか?コマンドを実行しますかcat
?単一のコマンドを実行して実行できますか?
答え1
これで、次のことができますbash
。zsh
cat file1 <(echo '********************************') file2
またはmikeservが彼のコメントで指摘したように(すべてのシェルで):
echo '********************************' | cat file1 - file2
David ZはBashで次のようにコメントしました。
cat file1 - file2 <<< '********************************'
ファイルのすべての改行が表示されます。file2
これは、「区切り記号」の後に改行文字が必要ない場合(たとえば、改行文字で始まる場合)に機能するため、echo -n '****'
次の改行文字を抑制します*
。
答え2
答え3
複数のコマンドに分割することもできます。
cat file1; echo '------------'; cat file2
グループコマンドまたはサブシェルを使用してパイプまたはリダイレクトできます。
# GROUP COMMAND:
{ cat file1; echo '----------'; cat file2; } | other-command
# ^ final semicolon is part of the syntax!
# SUBSHELL:
( cat file1; echo '----------'; cat file2 ) | other-command
もちろん、いつものようにセミコロンを使用する代わりに、複数行にわたって書くこともできます。また、別の区切り記号などを使用して他のファイルに簡単に拡張できます。
答え4
find
パラメータ-printf
とを -exec
組み合わせて使用すると、ファイルのcat
内容の前後にテキストを配置できます。
find . -type f -name "*.txt" -printf "/n This is before! \n" -exec cat {} \; -printf "/n This is after! /n" >> output.txt