Replace line after match
awk, bash, sed
Solution
This might work for you (GNU sed)
sed '/BBB/!b;n;c999' file
If a line contains `BBB`, print that line and then change the following line to `999`.
`!b` negates the previous address (regexp) and breaks out of any processing, ending the sed commands, `n` prints the current line and then reads the next into the pattern space, `c` changes the current line to the string following the command.
Problem
Given this file ``` $ cat foo.txt AAA 111 BBB 222 CCC 333 ``` I would like to replace the first line after `BBB` with `999`. I came up with this command ``` awk '/BBB/ {f=1; print; next} f {$1=999; f=0} 1' foo.txt ``` but I am curious to any shorter commands with either awk or sed.