insere caracteres no início da linha especificada no arquivo

1

Eu preciso inserir o caractere (#) no começo da linha especificada em um arquivo de texto.

Exemplo de entrada:

Hellow1
Hellow2
Hellow3

Saída desejada

Hellow1
#Hellow2
Hellow3
    
por user210015 12.01.2017 / 08:42

3 respostas

2

Para inserir um # na linha com a palavra Hellow2 , você pode usar sed da seguinte forma:

sed 's/^Hellow2/#&/' input.txt >output.txt

Para inserir um # no início da segunda linha de um texto, você pode usar sed da seguinte forma:

sed '2s/.*/#&/' input.txt >output.txt

O & será substituído pelo que foi correspondido pelo padrão.

Estou evitando usar sed -i (edição no local), porque não sei o que sed você está usando e a maioria das implementações de sed usa formas incompatíveis de manipular esse sinalizador.

Em vez disso, faça a substituição como acima e, em seguida,

mv output.txt input.txt

se você quiser substituir os dados originais pelo resultado. Isso também lhe dá a chance de ter certeza de que saiu corretamente.

Coisa equivalente a awk :

awk '/^Hellow2/ { print "#" $0; next } { print }' input.txt >output.txt

awk 'NR == 2 { print "#" $0; next } { print }' input.txt >output.txt
    
por 12.01.2017 / 09:06
2

Sua pergunta não está clara. Supondo que você esteja querendo comentar o texto específico:

sed -i.bak 's/^\(Hellow2\)$/#/'

Isso fará uma substituição no local de qualquer linha que corresponda exatamente à string "Hellow2" e as substitua por um # seguido pela linha correspondente.

    
por 12.01.2017 / 08:59
0

Você pode fazer isso com awk :

awk '{if ($0 == "Hellow2") print "#"$0; else print $0}' yourfile > outputfile
    
por 12.01.2017 / 08:59