com awk
:
awk -F/ '$1=="<<" {i=$2; for(j=3;j<=NF;j++) \
if($j~/^Contents/) split($j,a,"[()]"); print i " _ " a[2]}' file.txt
-
Definindo o separador de campo como
/
, se o primeiro campo for<<
, salvando o segundo campo como variáveli
a ser impresso posteriormente -
Iterando o restante dos campos e se algum campo começar com
Contents
, então dividindo o campo em()
para criar o arraya
,for(j=3;j<=NF;j++) if($j~/^Contents/) split($j,a,"[()]")
-
imprimindo a variável
i
e o segundo elemento da matriza
separando-os por_
Exemplo:
% cat file.txt
1731 0 obj
<</Page 250/Type/Annot/Subtype/Highlight/Rotate 0/Rect[ 95.4715 347.644 337.068 362.041]/NM(929cd95c-f962-4fa3-b734-2e0e67d7b321)/T(iPad)/CreationDate(D:20160818145053Z00'00')/M(D:20160818145204Z00'00')/C[ 0.454902 0.501961 0.988235]/CA 1/QuadPoints[ 95.4715 362.041 337.068 362.041 95.4715 347.644 337.068 347.644]/Contents(EXAMPLE OF TEXT TO BE EXTRACTED)/F 4/Subj(Highlight)>>
endobj
% awk -F/ '$1=="<<" {i=$2; for(j=3;j<=NF;j++) if($j~/^Contents/) split($j,a,"[()]"); print i " _ " a[2]}' file.txt
Page 250 _ EXAMPLE OF TEXT TO BE EXTRACTED