Embora você tenha mencionado sed , essas são uma espécie de awk -y tarefas:
awk -v pat="Fred Flintstone" '$0 ~ pat {count++;\
if (count == 2) { $0 = $0" someString" ;} ;}; 1' file.txt
-
-v pat="Fred Flintstone"salva o padrão Regex para corresponder à variávelpata ser usada dentro deawkexpressões -
$0 ~ patverifica o registro em relação apatpara uma correspondência; se for correspondida, a variávelcountserá aumentada em 1 e secountfor 2, o registro será redefinido como tendo o conteúdo atual maissomeString({count++; if (count == 2) { $0 = $0" someString" ;} ;}) -
1 é uma expressão idiomática; como é truthy , todos os registros seriam impressos
Exemplo:
% cat file.txt
Fred Flintstone
Johnson Stone
Fred Flintstone
Fred Flintstone
Michael Clark
% awk -v pat="Fred Flintstone" '$0 ~ pat {count++; if (count == 2) { $0 = $0" someString" ;} ;}; 1' file.txt
Fred Flintstone
Johnson Stone
Fred Flintstone someString
Fred Flintstone
Michael Clark