{ cat file; echo 'END OF FILE'; } > newFile , isso também funciona graças a sh. *. (não sed, mas funciona e é simples)
4
um simples echo "Cool Text" >> filetambém deve fazer o truque.
Danpe
Respostas:
95
sed -e "\$aTEXTTOEND" é a maneira mais simples.
Como funciona
$corresponde à última linha (é um sedendereço normal ; 4aTEXTTOENDseria inserido após a quarta linha), aé o comando append e TEXTTOENDé o que acrescentar.
É verdade, mas você pode adivinhar que o caso de uso do OP está agrupando o arquivo com " <php " e " >" e citando o conteúdo selecionado de uma só vez, então ele provavelmente realmente quer um sedfragmento.
dmckee
2
Além disso, se você vai fazer isso e não querem uma nova linha, use echo -n
Vinko Vrsalovic
2
Eu não gosto de adivinhar. Cada vez que tento, estou errado.
4
Outra razão pela qual a resposta aceita é mais útil é o caso de anexá-la sudo, o que causa uma falha nessa variação, já que echoé um comando shell interno, e não um arquivo executável encontrado em$PATH
Tony Cesaro
@TonyCesaro: echoé um arquivo interno, mas também é um arquivo executável encontrado em$PATH
Zan Lynx
24
Supondo que você queira colocar a tag php final nos arquivos,
De uma maneira simples, para escrever e fazer as alterações no conteúdo em uma linha específica de um arquivo. Se você deseja inserir algo em um número de linha específico, o comando abaixo pode ser usado:
sed -i '2i i have started' sheikh.log
onde 2i- a linha número 2 e i significa inserção. Se você precisar inserir a última linha, use $no lugar de 2. eu comecei - o texto a ser inserido e sheikh.logé o nome do arquivo.
Também podemos fazer as alterações na linha usando o comando abaixo
Eu diria que qualquer um que tenha pesquisado como inserir / anexar texto ao início / fim de um arquivo provavelmente também precisará saber como fazer o outro.
Isso é calenviado para o gnu- sed(chamado gsedno macOS instalado via brew.sh ) com RegEx ( -E) estendido e 6 "scripts" aplicados ( -e) e as quebras de linha são escapadas \para facilitar a leitura. Os scripts 1 e 2 usam 1i\"na linha 1, insira". Os scripts 5 e 6 costumam $a\"na linha <último>, acrescentar". Alinhei verticalmente as saídas de texto para fazer o código representar o que é esperado no resultado. Os scripts 3 e 4 fazem substituições (o último se aplica somente à "linha <última>"). O resultado é a conversão da saída do comando para JSON válido.
Embora eu não tenha votado em sua pergunta, observe que já temos várias respostas, incluindo uma aceita, que demonstram o resultado desejado.
Jeff Schaller
@JeffSchaller A comunidade Stack Exchange não é um fórum. Seu objetivo vai além de ajudar o OP a ser desbloqueado. O objetivo é propagar a base de conhecimento global com muitas opções que os candidatos podem encontrar ao procurar respostas. O motivo pelo qual intitulei minha resposta é ajudar os usuários a reconhecerem a utilidade dessa resposta antes mesmo de clicarem no resultado do Google.
{ cat file; echo 'END OF FILE'; } > newFile
, isso também funciona graças a sh. *. (não sed, mas funciona e é simples)echo "Cool Text" >> file
também deve fazer o truque.Respostas:
sed -e "\$aTEXTTOEND"
é a maneira mais simples.Como funciona
$
corresponde à última linha (é umsed
endereço normal ;4aTEXTTOEND
seria inserido após a quarta linha),a
é o comando append eTEXTTOEND
é o que acrescentar.fonte
sed -e '$a\NEWLINE\\'
. Substitua NEWLINE por uma nova linha real.Não há necessidade de usar
sed
nesse caso. E sefonte
<php
" e ">
" e citando o conteúdo selecionado de uma só vez, então ele provavelmente realmente quer umsed
fragmento.sudo
, o que causa uma falha nessa variação, já queecho
é um comando shell interno, e não um arquivo executável encontrado em$PATH
echo
é um arquivo interno, mas também é um arquivo executável encontrado em$PATH
Supondo que você queira colocar a tag php final nos arquivos,
deve fazer o truque
fonte
Veja sua postagem original para obter o comando all in one sed.
fonte
Use o comando sed 'append (a)'. Por exemplo, para acrescentar duas linhas no final do arquivo:
fonte
De uma maneira simples, para escrever e fazer as alterações no conteúdo em uma linha específica de um arquivo. Se você deseja inserir algo em um número de linha específico, o comando abaixo pode ser usado:
onde
2i
- a linha número 2 e i significa inserção. Se você precisar inserir a última linha, use$
no lugar de 2. eu comecei - o texto a ser inserido esheikh.log
é o nome do arquivo.Também podemos fazer as alterações na linha usando o comando abaixo
i
é alterado parawe
.fonte
Primeiro e último
Eu diria que qualquer um que tenha pesquisado como inserir / anexar texto ao início / fim de um arquivo provavelmente também precisará saber como fazer o outro.
Explicação
Isso é
cal
enviado para o gnu-sed
(chamadogsed
no macOS instalado via brew.sh ) com RegEx (-E
) estendido e 6 "scripts" aplicados (-e
) e as quebras de linha são escapadas\
para facilitar a leitura. Os scripts 1 e 2 usam1i\
"na linha 1, insira". Os scripts 5 e 6 costumam$a\
"na linha <último>, acrescentar". Alinhei verticalmente as saídas de texto para fazer o código representar o que é esperado no resultado. Os scripts 3 e 4 fazem substituições (o último se aplica somente à "linha <última>"). O resultado é a conversão da saída do comando para JSON válido.resultado
fonte