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 IFS
Variable hat den Standardwert:
$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"
Der read
hier verwendete Befehl liest das erste Wort in die Variable ein word1
und das zweite Wort in die Variable word2
. Der Bindestrich zwischen den Wörtern wird in die Variable eingelesen dash
und 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##* }