Разбить строку (хранящуюся в переменной) на несколько слов, используя пробелы, но не пробелы в двойных кавычках
Я пытаюсь написать для меня сложный сценарий, в котором моей целью является следующее. У меня есть строка, которая выглядит следующим образом:
2012 2013 "multiple words"
Моя цель - поместить каждый из них в массив, разделенный пробелами, но только для совпадений с одним словом, а не для тех, которые заключены в двойные кавычки. Это следует считать одним словом. Поэтому моя идея заключалась в том, чтобы сделать это в два этапа. Сначала сопоставьте те слова, которые кратны, удалите их из строки, затем в другой итерации, разделенной пробелом.
К сожалению, я не могу найти помощь о том, какecho
только матч. Пока у меня есть это:
array=$(echo $tags | sed -nE 's/"(.+)"/\1/p')
Но это приведет к (на OS X):
2012 2013 multiple words
Ожидаемый результат:
array[1]="2012"
array[2]="2013"
array[3]="multiple words"
Как бы я решил эту проблему?
Благодарю.