2013-02-14 72 views
6

我試圖將cat一些文件放在一起,同時在文件之間添加一些文本。我是Unix新手,我沒有語法的問題。如何將文本文本添加到Unix'cat'命令中

這裏是我的失敗嘗試:

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 

我該如何解決這個問題?我應該使用管道還是什麼?

回答

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 

等。

+0

是的!謝謝! – incandescentman 2013-02-14 22:09:48

4

的工藝替代似乎工作:

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

您也可以使用此文檔中命令替換。

$ cat <<EOF 
FOO 
$(< foo.txt) 
BAR 
$(< bar.txt) 
EOF 
+0

如果您沒有單引號FOO,則可以在here-doc中嵌入命令替換。 – chepner 2013-02-14 20:53:53

+0

@chepner很高興知道,但我如何在這裏使用它? – 2013-02-14 20:55:09

+0

我已經編輯了你的問題,而且很沉重;我不認爲你可以將這裏的字符串與其他文件參數合併爲「cat」(在我的測試中,這裏的字符串被忽略)。 – chepner 2013-02-14 20:57:23

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 

有技巧,你可以用進程替換和命令替換(見利Levitsky的答案)扮演一個做這一切命令(而不是這裏使用的單獨的cat進程),但這應該足夠高效,而且文件很少。

+0

很好的選擇,以避免不得不重複指定相同的輸出文件 – erjoalgo 2018-01-25 03:49:23