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ávelpat
a ser usada dentro deawk
expressões -
$0 ~ pat
verifica o registro em relação apat
para uma correspondência; se for correspondida, a variávelcount
será aumentada em 1 e secount
for 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