我有一个小的Bash脚本,它获取目录的所有Markdown文件,并将它们合并为如下所示:
for f in *.md; do (cat "${f}";) >> output.md; done
Run Code Online (Sandbox Code Playgroud)
它运作良好.现在我想在每个文档之间添加字符串"\newline",如下所示:
for f in *.md; do (cat "${f}";) + "\newline" >> output.md; done
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?上面的代码显然不起作用.
如果你想要文字字符串"\newline",试试这个:
for f in *.md; do cat "$f"; echo "\newline"; done > output.md
Run Code Online (Sandbox Code Playgroud)
这假设output.md尚不存在.如果是(并且您希望将其内容包含在最终输出中),您可以:
for f in *.md; do cat "$f"; echo "\newline"; done > out && mv out output.md
Run Code Online (Sandbox Code Playgroud)
这可以防止错误cat: output.md: input file is output file.
如果你想覆盖它,你应该rm在开始之前.
你可以做:
for f in *.md; do cat "${f}"; echo; done > output.md
Run Code Online (Sandbox Code Playgroud)
您可以添加echo命令来添加换行符。为了提高性能,我建议将写入移到循环>之外for,以防止在每次迭代时读取和写入文件。