Я пытаюсь преобразовать список строк в кавычках, разделенных запятыми, в список строк, разделенных символами новой строки, используя bash и sed.
Вот пример того, что я делаю:
#!/bin/bash
comma_to_newline() {
sed -En $'s/[ \t]*"([^"]*)",?[ \t]*/\\1\\\n/gp'
}
input='"one","two","three"'
expected="one\ntwo\nthree"
result="$( echo "${input}" | comma_to_newline )"
echo "Expected: <${expected}>"
echo "Result: <${result}>"
if [ "${result}" = "${expected}" ]; then
echo "EQUAL!"
else
echo "NOT EQUAL!"
fi
И вывод, который я получаю:
Expected: <one
two
three>
Result: <one
two
three>
NOT EQUAL!
Я знаю, что это как-то связано с символами новой строки, но я не могу понять, что. Если я заменяю символы новой строки другой строкой, такой как XXX
, она работает нормально, и bash сообщает, что строки равны.