Powiedzmy, że mam taki plik tekstowy:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
Chciałbym zastąpić część między GENERATED CONTENT
tagami zawartością innego pliku.
Jaki jest najprostszy sposób to zrobić?
bash
unix
shell-script
textfiles
text-processors
smokris
źródło
źródło
sed
może zrobić o wiele więcej niż tylkos/.../...
!r insert_file
Polecenie musi być ostatnią rzeczą, na swojej linii. Zauważ, że ani białe znaki, ani komentarze nie są dozwolone po nim. Kod został przetestowany przy użyciu GNUsed
z--posix
włączoną opcją i działał zgodnie z oczekiwaniami, więc powinien działać z dowolną zgodną z POSIX-emsed
.output=$(sed -e "..." existing_file)
), A następnie wykonania zamiany w drugim przejściu (np.echo "$output" > existing_file
), Ponieważ próba przekierowania do pliku, z którego czytasz, spowoduje obcięcie go przed odczytaniem zawartości.źródło
Ostrzeżenie: To zdecydowanie nie jest najprostszy sposób, aby to zrobić. (EDYCJA: bash działa; POSIX grep też jest w porządku)
Jeśli główny tekst znajduje się w pliku „main”, a wygenerowana treść znajduje się w pliku „gen”, możesz wykonać następujące czynności:
źródło
main
do pisania, wyczyszczenia, zanim zostanie przeczytana przez kota.źródło
r FILE2
możesz powiedzieć,r !command
że czytasz z innego skryptu.