各ファイルの間に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`