Mam katalog pełen plików tekstowych. Moim celem jest dołączenie tekstu na początku i na końcu każdego z nich. Tekst na początku i na końcu jest taki sam dla każdego pliku.
W oparciu o kod, który dostałem z sieci, jest to kod dołączany na początku pliku:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Jest to kod dołączany na końcu pliku. Celem jest dodanie tekstu };
na końcu każdego pliku:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Przykłady, z których czerpałem, dotyczyły działania na poszczególnych plikach. Pomyślałem, że spróbuję działając na wielu plików przy użyciu symboli wieloznacznych, *.txt
.
Mogę także popełniać inne błędy. W każdym razie, jak dołączyć tekst na początku i na końcu wielu plików?
źródło
-i
zamiast tego zastępowania pliku nie działa, po prostu drukuje na standardowe wyjście.Spróbuj użyć
ex
:gdzie są polecenia:
bufdo!
wykonuje poniższe polecenia dla każdego otwartego bufora / pliku (uwaga: to nie jest POSIX )1s/^/HEAD/
- wstawiaHEAD
tekst do pierwszego wiersza na początku wiersza$s/$/TAIL/
- dołączaTAIL
tekst w ostatnim wierszu na końcu wierszaa argumentami są:
-s
- tryb cichy / szybki-cxa
- zapisz wszystkie otwarte bufory / pliki i wyjdź*.foo
- wszystkie pliki w bieżącym katalogu (*
) zfoo
rozszerzeniem, wykorzystania**/*.foo
dla recursivity (po włączeniu globstar:shopt -s globstar
)źródło
Za
gnu awk
pomocąinplace
rozszerzenia iBEGINFILE
/ENDFILE
:źródło
Ma również prawo być (z wynikami w
.out
plikach):Kolejny, bardziej rozbudowany wariant - pliki źródłowe zastąpione wynikiem:
źródło
Perl One-Liner na ratunek:
źródło