Ich habe versucht, die vorgeschlagenen Lösungen, mehrere Content-Einträge pro Zeile mit:
echo "first name (Jack) , seconde name (Lily)" | awk -F'[()]' '{print $2}'
#Jack
echo "first name (Jack) , seconde name (Lily)" | grep -oP "(?<=\().*(?=\))"
#Jack) , seconde name (Lily
echo "first name (Jack) , seconde name (Lily)" | sed -r 's/.*\((.*)\).*/\1/'
#Lily
Dafür biete ich eine robustere Lösung:
Lösungen:
echo "name (Jack)"| sed -n 's/[^(|^)]*(\([^(|^)]*\))/\1\n/gp'
#Jack
oder noch einfacher:
echo "name (Jack)"| sed -n 's/[^(]*(\([^)]*\))/\1 /gp'
#Jack
Test mehrerer Einträge pro Zeile:
echo "first name (Jack) , seconde name (Lily)" | sed -n 's/[^(]*(\([^)]*\))/\1 /gp'
#Jack Lily
oder
echo "first name (Jack) , seconde name (Lily)" | sed -n 's/[^(]*(\([^)]*\))/\1\n/gp'
#Jack
#Lily
Es gibt reichlich Dokumentation von 'awk',' grep' und 'sed' auf der anderen Seite von Google. –
Lesen Sie das Buch Effective Awk Programming, 4. Ausgabe, von Arnold Robbins für die Antwort auf diese und all Ihre zukünftigen grundlegenden awk Fragen. –