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ávelia 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
ie o segundo elemento da matrizaseparando-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