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