it-swarm.com.de

Ersetzen der Zeichenfolge basierend auf der Zeilennummer

Ich habe eine Situation, in der ich eine bestimmte Zeichenfolge in vielen Dateien ersetzen möchte

Ersetzen Sie eine Zeichenfolge AAA durch eine andere Zeichenfolge BBB , aber es gibt viele Zeichenfolgen, die mit beginnen AAA oder endet mit AAA, und ich möchte nur eine in Zeile 34 ersetzen und andere intakt halten.

Ist es möglich, durch Zeilennummer anzugeben, befindet sich diese Zeichenfolge in allen Dateien genau in der 34. Zeile.

52
krypto

Sie können die Zeilennummer in sed oder NR (Nummer des Datensatzes) in awk angeben.

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

oder verwenden Sie FNR (Dateinummerndatensatz), wenn Sie mehr als eine Datei in der Befehlszeile angeben möchten.

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

oder

sed '34s/AAA/BBB/'

vor Ort durch sed ersetzen

sed -i '34s/AAA/BBB/' file_name
88
ramruma