У меня есть файл с текстовым шаблоном:
AAAA - BBBB (CCCC) - (DDDD)
Меня интересует только использование первого набора AAAA - BBBB по отдельности (т.е. AAAA и BBBB). Я обрезал '(CCCC) - (DDDD)' с помощью:
FIRST_SET="${STRING%% (*}"
давая мне «AAAA - BBBB».
Хоть убей, не могу извлечь «АААА» из второго «ББББ».
Заранее спасибо.
решение1
Предположим, что вам нужен конечный результат в двух переменных оболочки, что нужные вам слова разделены пробелами, что в словах нет пробелов и что переменная IFS
имеет значение по умолчанию:
$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"
Команда read
, используемая здесь, будет считывать первое слово в переменную word1
, а второе слово — в переменную word2
. Тире между словами считывается в переменную dash
, а мусор в конце помещается в переменную с именем junk
.
решение2
Просто сделайте это, как в первом шаге:
FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }