Eu segui as instruções neste post Como inserir texto após uma determinada string em um arquivo?
mas suspeito que as instruções não sejam válidas para OSX.
Eu quero adicionar algum texto em um arquivo de origem usando Bash
sed '/pattern/a some text here' ${sourceFile}
mas quando executo o comando recebo
"/pattern/a some text here": comando a espera \ seguido por texto
editar
Eu criei um novo arquivo chamado infile
com uma única linha
pattern
e um script bash
#!/bin/bash
sed '/pattern/a\
text to insert' infile
executar o script ecoa "padrão" no console, mas não insere o texto
editar
Eu também tentei para o script bash
#!/bin/bash
sed '/pattern/a\
add one line\
\\and one more' infile
e os ecos terminais
pattern
add one line
\and one more
mas infile ainda tem uma única linha
pattern
Não tenho certeza se o OSX
ed
(encontrou uma dica positiva ), então aqui está outra opção:Isso envia os seguintes comandos para
ed
:/pattern/
-- procure por "padrão"a
-- anexa o seguinte texto após essa linhatext to insert
-- o texto.
-- fim do texto inseridow
-- grava o arquivo atualizado no discoq
-- sair da edO
>/dev/null
redirecionamento é para silenciared
o relatório dapattern
linha correspondente.Eu prefixei o
ed
comando com um silênciogrep
para garantir que "padrão" exista no arquivo antes de pedired
para procurá-lo - caso contrário, você ficará confuso quando a pesquisa?
deed
padrão falhar.Você esqueceu de usar a
-i
opção de edição no local dosed
. Porque sed é umstream editor
então não fará nenhuma alteração na entrada. Você precisa explicitamente fazer os esforços para mover o arquivo de saída de volta para a entrada ou usar a opção -i, se disponível: