Digamos que eu tenha um arquivo de texto como este:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
Gostaria de substituir a parte entre as GENERATED CONTENT
tags pelo conteúdo de outro arquivo.
Qual é a maneira mais simples de fazer isso?
bash
unix
shell-script
textfiles
text-processors
smokris
fonte
fonte
sed
pode fazer muito mais do que apenass/.../...
!r insert_file
comando deve ser a última coisa em sua linha. Observe que nem espaço em branco nem comentários são permitidos depois dele. O código foi testado usando o GNUsed
com a--posix
opção ativada e funcionou como esperado, portanto, deve funcionar com qualquer posix compatívelsed
.output=$(sed -e "..." existing_file)
) e execute a substituição em uma segunda passagem (por exemploecho "$output" > existing_file
), pois tentar redirecionar para um arquivo do qual você está lendo fará com que ele trunque antes da leitura do conteúdo.fonte
Aviso: Definitivamente, essa não é a maneira mais simples de fazer isso. (EDIT: bash funciona; POSIX grep também é bom)
Se o texto principal estiver no arquivo "principal" e o conteúdo gerado estiver no arquivo "gen", você poderá fazer o seguinte:
fonte
main
para escrita, limpando-a, antes de ser lida pelo gato.fonte
r FILE2
você pode dizerr !command
para ler de um script diferente.