2つのテキストファイルをマージして区切り記号を追加しますか?

2つのテキストファイルをマージして区切り記号を追加しますか?

cat file1 file22つのテキストファイルをマージします。しかし、それらの間に1〜2行の区切り文字を追加するには、最初のファイルを開き、最後に行を追加する必要がありますか********************************、それとも2番目のファイルを開き、一番上に行を追加する必要がありますか?コマンドを実行しますかcat?単一のコマンドを実行して実行できますか?

答え1

これで、次のことができますbashzsh

cat file1 <(echo '********************************') file2

またはmikeservが彼のコメントで指摘したように(すべてのシェルで):

echo '********************************' | cat file1 - file2

David ZはBashで次のようにコメントしました。

cat file1 - file2 <<< '********************************'

ファイルのすべての改行が表示されます。file2これは、「区切り記号」の後に改行文字が必要ない場合(たとえば、改行文字で始まる場合)に機能するため、echo -n '****'次の改行文字を抑制します*

答え2

検索を使用しない別のcat方法ここ

awk 'FNR==1{print "******"}{print}' file1 file2 | sed '1d'

最後sed 1dのパイプは、区切り文字を含む最初の行を削除することです。

sedただし、提案されているようにコマンドを使用すると、最終使用を回避できます。1_CR彼のコメントで。

awk 'FNR==1 && NR!=1 {print "******"}{print}' file1 file2

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

関連情報