一致後のラインNの交換

一致後のラインNの交換

500行のテキストを含むファイルがあるとします。

one
two
three
four
five
six
seven
eight
nine
ten
.
.
.
five-hundred

一致後に5行目を特定の文字列に置き換えるには、次の手順を実行します。

sed '/two/{n;n;n;n;n;s/.*/MODIFIED/}' inputfile

出力:

one
two
three
four
five
six
MODIFIED
eight
nine
ten
.
.
.
five-hundred

しかし、試合が終わった後に60番のラインを交換したい場合はどうすればいいですか?私は「n」を60回書きたくありません。

x、h / H、g / G、および範囲を試してみましたが、まだ希望の出力を得ることはできません。

ベストアンサー1

解決策awk

awk '/two/{ n=NR+5 } NR==n{ sub(/.*/, "MODIFIED") }1' file

または路線を変更したい場合

awk '/two/{ n=NR+5 } NR==n{ $0="MODIFIED" }1' file

おすすめ記事