Quero inserir texto na parte superior de um arquivo já existente. Como posso conseguir isso. Eu tentei echo
e tee
não obtive sucesso.
Eu estava tentando inserir uma linha de repo na parte superior do sources.list
arquivo do terminal.
Nota
Eu preciso de uma solução rápida de uma linha, porque o método de outra resposta já me era conhecido
apt
command-line
bash
Anwar
fonte
fonte
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
- você também precisa do sudo before tee para obter privilégios de administrador. Mas por que diabos você gostaria de adicionar algo no topo do sources.list?Respostas:
Na verdade, é bastante fácil com
sed
:sed -i -e '1iHere is my new top line\' filename
1i
diz ao sed para inserir o texto a seguir na linha 1 do arquivo; não esqueça a\
nova linha no final, para que a linha 1 existente seja movida para a linha 2.fonte
s
vez de i in1i
.echo "Text Here" >> Filename
Na edição geral no lugar com um script é complicado, mas você pode usar
echo
ecat
em seguida,mv
No entanto, se você estiver jogando com o sources.list, precisará adicionar alguma validação e prova de balas para detectar erros, etc., porque você realmente não quer perder isso. Mas essa é uma pergunta separada :-)
fonte
conhecido que
prepend
é meu shell personalizado :Use também um caminho relativo ou caminho absoluto, ele deve funcionar bem:
Atualização:
se você deseja um script permanente para isso, abra
nano /etc/bash.bashrc
e adicione esta função no final do arquivo:Reabra seu terminal e aproveite:
fonte
E por que não usar um editor de texto genuíno para isso? ed é o editor de texto padrão.
Ou, se você deseja que os comandos sejam mais legíveis:
1
: ir para firstlinei
: modo de inserção.
: pare de inserir, volte ao modo normalwq
: escreva e saia, obrigado, adeus.fonte
FIRST LINE
) com isso?first_line
, em seguida:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Certifique-se de que a variável não se expanda para um único ponto e não contenha caracteres de nova linha (por isso, desinfecte-a se vier da entrada do usuário).Sempre há a
awk
opção. Substitua astring
variável pelo seu conteúdo. Esta não é uma alteração no local. Pessoalmente, costumo não fazer alterações no local. Esta é definitivamente uma preferência pessoal. Duas coisas,-v
significa uma variável no awk e a variáveln
é usada aqui para corresponder efetivamente a um número de linhaNR == 1
. Você pode usar isso de várias maneiras apenas alterando o valor den
es
.Exemplo:
fonte
Você pode usar o Vim no modo Ex:
1
selecione a primeira linhai
insira nova linha de textox
salvar e fecharfonte