2つの空白行を区切り文字として使用して複数のファイルをリンクしますか?

2つの空白行を区切り文字として使用して複数のファイルをリンクしますか?

各ファイルの間に2つの改行を使用してMarkdownファイルを作成しようとしています。

次のコマンドを試してみました。

paste -sd '\n\n' file1.md file2.md

これにより、必要な2つの代わりに改行文字を使用してファイルをリンクできます。

\n各接続の間に2つの文字を含む複数のファイルをリンクするには、どのコマンドを使用できますか?

答え1

そしてpaste

:|paste -sd'\n' file1.md - - file2.md

答え2

cuonglmの答えに加えて:

:|paste -sd'\n' $(sed $"s/\s/ - - /g" <<< $(ls -1|paste -sd" " -))

これを行うには、すべてのファイルがフォルダ内にリンクされている必要があり、可能であれば英数字でソートする必要があります。その後、出力をファイルにリダイレクトできます。

ここで何が起こっているのでしょうか?

:

これがバッシュの真の力だ。これはtrueを返すので、主にno-opsに使用されます。

|

これは左側のコマンドの出力を取得するパイプです。管路正しいコマンドの入力にあります。

$(sed $"s/\s/ - - /g" <<< $(ls -1|paste -sd" " -))

これは貼り付けに必要な行を作成するだけです。それは次のとおりです

file1 - - file2 - - file3 - - file4 ...

したがって、貼り付けが呼び出されると、リストされたファイルのすべての行が標準出力に書き込まれます。ファイルが見つからない場合、または「-」ファイルが呼び出されない場合は、貼り付けは標準入力から読み取られ、次からTRUE値が取得されます。この値は貼り付けとしてパイプされます。

通常、各ファイルはタブ演算子が追加された標準出力に書き込まれます。 -d "\ n"パラメーターを使用して貼り付けると、タブは改行に置き換えられます。

したがって、貼り付けは改行で区切られたファイルを標準出力に書き込みます。貼り付けが「-」を見つけた場合はtrueを取り、改行で区切られたファイルのみを標準出力に書き込みます。

答え3

awkあなたと一緒に扱うことができます多くの種類FNR==1ファイルを選択し、最初のファイル()を除く各ファイル()の前に区切り文字を印刷しますNR>1。だから

awk '(NR>1 && FNR==1){printf ("\n\n")};1' file1.md file2.md ... fileN.md

ファイルをリンクし、ファイル間に指定された区切り文字を追加します。


最後の出力で末尾の区切り文字が気に入らない場合は、この特別な場合(区切り記号は多くの空白を減らす)、次のこともできます(使用gnu sed)。

sed -s '${G;G}' file1.md file2.md ... fileN.md

答え4

最良の解決策ではありませんが、あなたの場合に適しています。

echo -e `cat file1.md`"\n\n"`cat file2.md`

関連情報