1ère solution : Avec les échantillons et les tentatives que vous avez montrés, veuillez essayer ce qui suit awk
code. Écrit et testé avec GNU awk
.
Voici le Démonstration en ligne pour les expressions rationnelles utilisées.
echo "$line"
95:p1=a b c 95:p2=d e 96:p1=a b c 96:p2=d e
awk -v RS='[0-9]{2}:p[0-9]=[a-zA-Z] [a-zA-Z]( [a-zA-Z]|$)*' 'RT{print RT}' <<<"$line"
Les résultats obtenus avec les échantillons présentés seront les suivants :
95:p1=a b c
95:p2=d e
96:p1=a b c
96:p2=d e
2ème solution : Avec n'importe quel système POSIX awk
Veuillez essayer ce qui suit awk
code :
awk '
{
while(match($0,/[0-9]{2}:p[0-9]=[a-zA-Z] [a-zA-Z]( [a-zA-Z]|$)*/)){
print substr($0,RSTART,RLENGTH)
$0=substr($0,RSTART+RLENGTH)
}
}
' <<<"$line"