Проблема
Я хочу преобразовать строку путей (где каждый путь может содержать экранированные пробелы) в печатный список путей.Я в основном использую echo
и sed
, и проблема заключается в этом (см. Ниже).
Например, я хочу, чтобы эти три файла:
one two three\ two\ one
были напечатаныв трех строках:
one
two
three two one
Проблема с "sed" и "echo"
(1) Это три примера файлов: "один", "два" и "три два один"".
echo "one two three\ two\ one"
# one two three\ two\ one
(2) Я заменяю пробел, разделяющий файлы, новой строкой.
echo "one two three\ two\ one" | sed 's/\([^\]\) /\1$'"'"'\\n'"'"'/g'
# one$'\n'two$'\n'three\ two\ one
(3) Я проверяю это, действительно" повторяя "вывод вышеприведенногоприводит к выводу, который я хочу.
echo one$'\n'two$'\n'three\ two\ one
# one
# two
# three two one
Сочетая (2) и (3), функции ломаются с помощью "xargs echo":
echo "one two three\ two\ one" | sed 's/\([^\]\) /\1$'"'"'\\n'"'"'/g' | xargs echo
# one$\ntwo$\nthree two one
Как исправить подстановку sed?
Как можно исправить подстановку sed, чтобы эхо-вывод дал:
one
two
three two one
Я ищу решение, которое использует в основном "echo" и "sed" (не ищудругие решения).
Я также не могу использовать "echo -e" для интерпретации экранированных символов.