7

我正在尝试将一些文件放在一起,同时在文件之间添加一些文本。我是一个 Unix 新手,我没有语法的窍门。

这是我失败的尝试:

cat echo "# Final version (reflecting my edits)\n\n" final.md echo "\n\n# The changes I made\n\n" edit.md echo "\n\n#Your original version\n\n" original.md > combined.md

我该如何解决?我应该使用管道还是什么?

4

3 回答 3

7

流程替换似乎有效:

$ cat <(echo 'FOO') foo.txt <(echo 'BAR') bar.txt
FOO
foo
BAR
bar

您还可以在此处文档中使用命令替换。

$ cat <<EOF
FOO
$(< foo.txt)
BAR
$(< bar.txt)
EOF
于 2013-02-14T20:49:54.653 回答
7

使用命令组将输出合并到一个流中:

{
   echo -e "# Final version (reflecting my edits)\n\n"
   cat final.md 
   echo -e "\n\n# The changes I made\n\n"
   cat edit.md 
   echo -e "\n\n#Your original version\n\n"
   cat original.md
} > combined.md

您可以使用进程替换和命令替换(请参阅 Lev Levitsky 的回答)来使用一个命令(而不是cat此处使用的单独进程)来完成所有操作,但是对于这么少的文件,这应该足够有效。

于 2013-02-14T20:51:53.283 回答
5

如果我理解你,它应该是这样的:

echo "# Final version (reflecting my edits)\n\n" >> combined.md
cat final.md >> combined.md
echo "\n\n# The changes I made\n\n" >> combined.md
cat edit.md >> combined.md

等等。

于 2013-02-14T20:48:04.860 回答