Есть несколько вещей, которые вы можете улучшить.Причина, по которой вы используете альтернативные разделители '|'
для выражения подстановки sed
(во избежание появления "1002 *" "заборов" усложняет использование '|'
в качестве OR (альтернативного) компонента регулярного выражения. Выберите альтернативу.разделитель, который также не является сервером как часть регулярного выражения, '#'
работает нормально.
Далее нет смысла зацикливаться, просто используйте строку here для перенаправления содержимого arr
до sed
и поместите все это в подстановку команды *1013* со спецификатором формата "%s\n"
, чтобы обеспечить вывод, разделенный символом новой строки (это довольно много, но на самом деле это не более чем)
arr='foo/foo/baz foo/bar/baz foo/baz/baz'
printf "%s\n" $(sed 's#/\(bar\|baz\)/#/test/#g' <<< $arr))
Пример использования / Вывод
Чтобы проверить это, просто выберите вышеприведенные выражения и средней кнопкой мыши вставьте выделение в свой терминал, например,
$ arr='foo/foo/baz foo/bar/baz foo/baz/baz'
> printf "%s\n" $(sed 's#/\(bar\|baz\)/#/test/#g' <<< $arr)
foo/foo/baz
foo/test/baz
foo/test/baz
Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.