Usando o GNU sed
(o comando t
precisa de um rótulo se terminar com ;
no padrão sed
):
$ sed '/^\([^,]*,\)/s/$/SUCCESS/;t;s/$/FAILURE/' file
a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,SUCCESS
a1a5bf1547f50feea4120290343f89e4;Common.jar,a1a5bf1547f50feea4120290343f89e4;Common.jar,SUCCESS
1264897ea44d85c3f0dba127ff02f514;DA.jar,1264897ea44d85c3f0dba127ff02f514;DA.jar,SUCCESS
e77834d4ba2a4193b94fee9470a458a4;FW.jar,e77834d4ba2a4193b94fee9470a458a4;FW.jar,SUCCESS
Um exemplo em que duas linhas geram FAILURE
:
$ sed '/^\([^,]*,\)/s/$/SUCCESS/;t;s/$/FAILURE/' file
a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,SUCCESS
1a5bf1547f50feea4120290343f89e4;Common.jar,a1a5bf1547f50feea4120290343f89e4;Common.jar,FAILURE
1264897ea44d85c3f0dba127ff02f514;DA.jar,1264897ea44d85c3f0dba127ff02f514;DA.jar,SUCCESS
77834d4ba2a4193b94fee9470a458a4;FW.jar,e77834d4ba2a4193b94fee9470a458a4;FW.jar,FAILURE
O script sed
com anotações:
/^\([^,]*,\)$/s/$/SUCCESS/; # this lines looks like XXX,XXX,
# add SUCCESS at the end of the line
t; # branch to end of script if last s command did something
s/$/FAILURE/ # add FAILURE at the end of the line
Para realizar uma edição no local com o GNU sed
, use o comando acima, mas com sed -i
no lugar de sed
.
Explicação de /^\([^,]*,\)/
: se essa expressão regular corresponder, a substituição seguinte será executada e adicionará SUCCESS
no final da linha. A expressão regular corresponde a uma cadeia no início de uma linha até e incluindo a primeira vírgula. Em seguida, ele tenta corresponder essa mesma sequência novamente imediatamente após a primeira. O
fará referência à string correspondida por \(...\)
.