Como adicionar o texto antes da linha no arquivo inteiro?

6

Eu tenho uma lista de domínio no arquivo de texto e preciso adicionar 127.0.0.1 ip antes da linha no arquivo inteiro. Exemplo como abaixo:

domain.txt

....
abc.com
...

Eu quero gerar arquivo HOSTS como

...
127.0.0.1 abc.com
...

No arquivo de texto, tenho milhares de entradas de domínio.

    
por Nullpointer 10.06.2016 / 10:50

5 respostas

6

Você pode conseguir isso com sed da seguinte maneira:

sed -i 's/^/127.0.0.1 /' /path/filename.txt

Melhor fazer um backup do arquivo antes, eu não tenho certeza se você precisa escapar do espaço ou não. Para fazer um backup diretamente quando você executa o sed você pode usar a seguinte linha:

sed -i_bak -e 's/^/127.0.0.1 /' /path/filename.txt

Um pouco mais de informações sobre sed você pode encontrar aqui .

    
por Videonauth 10.06.2016 / 10:54
7

Se você quiser que o original esteja intacto:

sed 's/^/127.0.0.1 /' domain.txt > new_domain.txt
    
por nobody 10.06.2016 / 10:58
3
O

awk é uma boa opção para essa questão. Explicando em dois exemplos:

# Let's consider a file domain.txt with lines like this:
# <domain> <user> <user> ....
# Ex: domain.zzz.yy user01 user02

# Extracting the first field of each line
awk '{ print "127.0.0.1 " $1;}' domain.txt

# produces: 127.0.0.1 domain.zzz.yy
# filter only first field $1=domain.zzz.yy
# $1: first field, $2: second field, and so on

# Extracting the whole line
awk '{ print "127.0.0.1 " $0;}' domain.txt

# produce: 127.0.0.1 domain.zzz.yy user01 user02
# $0: whole line
    
por gwarah 10.06.2016 / 19:12
2

Resposta da GUI usando o GEdit

  1. Abra seu arquivo no Gedit. Digamos que eu queira adicionar '127.0.0.1' ao início de todas as linhas neste arquivo de texto.

  • Usando o recurso de pesquisa e substituição, pesquise \n e substitua-o por \n127.0.0.1 . Em seguida, clique no botão Replace all , conforme mostrado abaixo:
  • Este é o seu resultado:
    Aviso: Você terá que inserir manualmente a substituição com o texto 127.0.0.1 no início da primeira linha.
  •     
    por Parto 10.06.2016 / 16:27
    0

    Maneira fácil de adicionar antes:

    $ printf "127.0.0.1 %s\n" $(cat domain.txt)
    

    %s means string of line on file

    \n means prints the content in new line

        
    por Nullpointer 22.03.2017 / 12:42