в Bash У меня есть массив names
, который содержит строковые значения
Dr. Praveen Hishnadas
Dr. Vij Pamy
John Smitherson,Dr.,Service Account
John Dinkleberg,Dr.,Service Account
Я хочу захватить только имена
Praveen Hishnadas
Vij Pamy
John Smitherson
John Dinkleberg
и сохранить их обратно в исходный массив, перезаписывая их неанизированные версии.
У меня есть следующий фрагмент кода обратите внимание, что я выполняю регулярное выражение в Perl (-P)
for i in "${names[@]}"
do
echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1
done
Что приводит квывод
Dr. Praveen Hishnadas
Dr. Vij Pamy
John Smitherson
John Dinkleberg
Вопросы:
1) Я неправильно использую команду просмотра ?:
? Я пытаюсь по желанию подобрать «доктора»не захватывая его
2) Как мне сохранить результат этого эха обратно в имена массивов? Я попытался установить его на
i=echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1
i=$(echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1)
i=`echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1`
, но безрезультатно. Я только начал изучать bash 2 дня назад и чувствую, что мой синтаксис немного отключен. Любая помощь приветствуется.