我正在尝试cat一些文件,同时在文件之间添加一些文本。我是一个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
我该如何解决这个问题?我应该使用烟斗还是其他东西?
答案 0 :(得分:6)
使用命令组将输出合并为一个流:
{
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
进程)来完成所有操作,但这应该足够有效这么少的文件。
答案 1 :(得分: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
等等。
答案 2 :(得分:4)
流程替换似乎有效:
$ cat <(echo 'FOO') foo.txt <(echo 'BAR') bar.txt
FOO
foo
BAR
bar
您也可以在here-document中使用命令替换。
$ cat <<EOF
FOO
$(< foo.txt)
BAR
$(< bar.txt)
EOF