Zeichenfolgenextraktion

Zeichenfolgenextraktion

Ich habe eine Datei mit dem Textmuster:

AAAA - BBBB (CCCC) - (DDDD)

Ich bin nur daran interessiert, den ersten Satz AAAA – BBBB einzeln zu verwenden (also AAAA und BBBB). Ich habe „(CCCC) – (DDDD)“ wie folgt abgeschnitten:

FIRST_SET="${STRING%% (*}" 

gibt mir ,AAAA – BBBB‘.

Ich kann beim besten Willen nicht aus dem zweiten „BBBB“ das Wort „AAAA“ extrahieren.

Dank im Voraus.

Antwort1

Angenommen, Sie möchten das Endergebnis in zwei Shell-Variablen, die gewünschten Wörter sind durch Leerzeichen getrennt, in den Wörtern sind keine Leerzeichen eingebettet und die IFSVariable hat den Standardwert:

$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"

Der readhier verwendete Befehl liest das erste Wort in die Variable ein word1und das zweite Wort in die Variable word2. Der Bindestrich zwischen den Wörtern wird in die Variable eingelesen dashund der Müll am Ende wird in die Variable mit dem Namen eingefügt junk.

Antwort2

Machen Sie es einfach wie Ihren ersten Schritt:

FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }

verwandte Informationen