Пожалуйста, попробуйте следующее:
sed '
/^.\{8\}s/ { # if the 9th char == "s" then
$!n # flush current line and read next line (unless eof)
$!n # same as above to proceed to the line after next
$!s/^\(.\{3\}\)./\1k/ # replace the 4th char with "k"
}' input.txt
или в виде однострочного:
sed '/^.\{8\}s/{$!n; $!n; $!s/^\(.\{3\}\)./\1k/}' input.txt
input.txt выглядит так:
Abchsffmskdv
bsdvnld
fsdgdhdh
iiiiiiiisiii
iiiiiii
iiiiiiii
output:
Abchsffmskdv
bsdvnld
fsdkdhdh
iiiiiiiisiii
iiiiiii
iiikiiii
Вы увидите, что приведенный выше скрипт заменяет 4-й символ следующей следующей строки, если шаблон найден независимо от номера строки.Если вы хотите зафиксировать номер строки, например, в 1-й строке, попробуйте вместо этого:
sed '
1 {
/^.\{8\}s/ {
$!n
$!n
$!s/^\(.\{3\}\)./\1k/
}
}' input.txt
output:
Abchsffmskdv
bsdvnld
fsdkdhdh
iiiiiiiisiii
iiiiiii
iiiiiiii
, который изменяет только 3-ю строку.