Люди на этом форуме были огромной справкой! Огромное спасибо!
Вот моя строка
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAx\nNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKt\na11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1\/zz\/
Я пытаюсь удалить \n и \от вышеупомянутой строки.
Я попробовал:
tr ‘\n\r\\’ ‘ ‘
sed 's/\n//g;s;\\;;g'
И несколько других изменений, но я не успешен в разделении всего. Я могу добраться \, но не n.
Кто-либо видит мою ошибку?
Попытка:
sed 's/\\n//g;s/\\//g'
Вы хотите удалить литерал \
сопровождаемый литералом n
. Следовательно, обратной косой черты нужно оставить в первой замене. В отличие от этого, s/\n//g
удалил бы символы новой строки.
Используйте это с tr
для удаления (-d
) весь \n
и \
:
tr -d '\\n\\'
Тест:
echo 'foo\nbar\foo' | tr -d '\\n\\'
Вывод:
foobarfoo
Вы могли сделать просто как это. У Вас не должно быть другой замены.
sed 's/\\n\|\\//g'
ИЛИ
sed 's~\\n\|\\~~g'
Пример:
$ var='UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAx\nNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKt\na11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1\/zz\/'
$ sed 's/\\n\|\\//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/
Объяснение:
Синтаксис sed:
sed 's/pattern/replace/modifier' file
Команда:
Splitted вышеупомянутое sed управляют как ниже для разъяснения.
sed 's/\\n\|\\//g'
s
- поиск и замена. \\n\|\\
- Шаблон. \\n
соответствуют литералу \n
, ИЛИ \|
соответствуют литералу \
. Так сначала это соответствует весь \n
во входной строке и затем соответствует \
//
, у Нас есть пустая сменная деталь, что означает, удаляют все подобранные символы или заменяют подобранные символы пустой строкой. g
- Глобальный модификатор. Это делает соответствие для случая глобально. т.е., если два или больше \
подарок символов на одной строке, это sed 's/\\//' file
удаляет только первое \
для каждой строки. Но глобальный модификатор g
силы sed
для соответствия всему существующему \
символы. Через GNU sed,
$ sed -r 's/\\n|\\//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/
<час> Через Perl,
$ perl -pe 's/\\n?//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/