Substituindo string baseado no número da linha

40

Eu tenho uma situação onde eu quero substituir uma string específica em muitos arquivos

Substitua uma string AAA por outra string BBB , mas há muitas strings começando com AAA ou terminando com AAA, e quero substituir apenas uma na linha 34 e mantenha os outros intactos.

É possível especificar por número de linha, em todos os arquivos esta string está exatamente na 34ª linha.

    
por krypto 02.04.2013 / 06:51

2 respostas

68

Você pode especificar o número da linha em sed ou NR (número de registro) no awk.

awk 'NR==34 { sub("AAA", "BBB") }'

ou use FNR (registro de número de arquivo) se você quiser especificar mais de um arquivo na linha de comando.

awk 'FNR==34 { sub("AAA", "BBB") }'

ou

sed '34s/AAA/BBB/'

para fazer substituição no local com sed

sed -i '34s/AAA/BBB/' file_name
    
por 02.04.2013 / 07:00
-3

Vamos supor que você queira substituir a terceira linha no file_record:

sed -i "s/'head -3 file_record | tail -1 '/replaced/" file_record
    
por 19.12.2017 / 09:20

Tags