2013-02-14 12 views
6

Próbuję zebrać niektóre pliki razem, jednocześnie dodając tekst między plikami. Jestem początkującym Uniksem i nie mam pojęcia o składni.Jak dodać tekst dosłowny do komendy Unix "cat"

Oto moja nieudana próba:

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 

Jak mogę rozwiązać ten problem? Czy powinienem używać rur lub coś takiego?

Odpowiedz

5

Jeśli cię rozumiem, powinno być coś takiego:

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 

i tak dalej.

+0

Tak! Dziękuję Ci! – incandescentman

4

Proces podstawienie wydaje się działać:

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

Można również użyć podstawienia polecenia wewnątrz tutaj dokumentu.

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

Możesz zamienić podstawienia komend w dokumencie tutaj-doc, jeśli nie podasz pojedynczego cudzysłowu FOO. – chepner

+0

@chepner Dobrze wiedzieć, ale jak mógłbym go tutaj użyć? –

+0

Zmontowałem twoje pytanie raczej mocno; Nie sądzę, że można tu łączyć łańcuchy-ciągi z innymi argumentami pliku "cat" (w moich testach ciągi tutaj są ignorowane). – chepner

6

Użyj grupę polecenia, aby połączyć wyjście do jednego strumienia:

{ 
    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 

istnieją sztuczki można grać z substytucji procesowej i podstawianie poleceń (patrz odpowiedź Lev Levitsky), by zrobić to wszystko z jednego (zamiast oddzielnych procesów używanych tutaj), ale powinno to być wystarczająco wydajne przy tak niewielkiej liczbie plików.

+0

świetna opcja, aby uniknąć konieczności wielokrotnego określania tego samego pliku wyjściowego – erjoalgo

Powiązane problemy