Sie können awk
wie folgt verwenden:
awk -F "[()]" '{ for (i=2; i<NF; i+=2) print $i }' file.txt
druckt:
%Vor%Sie können ein Array verwenden, um die eindeutigen Werte zu drucken:
awk -F "[()]" '{ for (i=2; i<NF; i+=2) array[]=$i; print array[] }' file.txt
druckt:
%Vor%HTH
Mit GNU grep können Sie eine Perl-kompatible Regex mit Look-around-Assertions verwenden, um die Parens auszuschließen:
%Vor% grep -oE '\([[:alnum:]]*?\)' | sed 's/[()]//g' | sort | uniq
-o
Gibt nur den übereinstimmenden Text -E
bedeutet erweiterte reguläre Ausdrücke verwenden \(
bedeutet Übereinstimmung mit einem Literal paren [[:alnum:]]
ist die POSIX-Zeichenklasse für Buchstaben und Zahlen. Das Skript sed
sollte die Parens entfernen. Dies wird gegen GNU Grep getestet, aber BSD sed, also seien Sie vorsichtig.
Um Ihre Liste zu reproduzieren:
%Vor%Um eine Liste eindeutiger Wörter zu erstellen, müssen Sie die Liste weiter bearbeiten:
%Vor%Sie können dies versuchen
%Vor%Erklärung:
Die erste sed-Anweisung platziert die Wörter in Klammern in einer neuen Zeile und die zweite sed ersetzt das Zeichen ')' durch eine neue Zeile. Also nach dem Ausführen der folgenden Anweisung
%Vor%Die Ausgabe würde so aussehen
%Vor%Nun wird dieser Ausgang unter eine awk-Anweisung geleitet, die das zweite Wort zwischen dem Filterzeichen '('
%Vor%Die Ausgabe wird jetzt
sein %Vor%Die obige Ausgabe wird zum Sortieren des Befehls -u geleitet, um eindeutige Wörter von der obigen Ausgabe zu erhalten. Hoffe, diese Erklärung hilft.