Tente:
sed 's/\n//g;s/\//g'
Você deseja remover um literal \
seguido por um literal n
. Consequentemente, a barra invertida deve ser escapada na primeira substituição. Por contraste, s/\n//g
removeria caracteres de nova linha.
As pessoas neste fórum têm sido uma ajuda tremenda! Muito obrigado!
Aqui está minha string
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAx\nNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKt\na11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1\/zz\/
Estou tentando remover o \ n e o \ da string acima.
Eu tentei:
tr ‘\n\r\’ ‘ ‘
sed 's/\n//g;s;\;;g'
E algumas outras variações, mas não sou bem sucedido em despir tudo. Eu posso pegar o \ mas não o n.
Alguém vê meu erro?
Tente:
sed 's/\n//g;s/\//g'
Você deseja remover um literal \
seguido por um literal n
. Consequentemente, a barra invertida deve ser escapada na primeira substituição. Por contraste, s/\n//g
removeria caracteres de nova linha.
Use isso com tr
para excluir ( -d
) todos \n
e \
:
tr -d '\n\'
Teste:
echo 'foo\nbar\foo' | tr -d '\n\'
Saída:
foobarfoo
Você poderia fazer simplesmente assim. Você não precisa ter outra substituição.
sed 's/\n\|\//g'
OR
sed 's~\n\|\~~g'
Exemplo:
$ var='UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAx\nNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKt\na11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1\/zz\/'
$ sed 's/\n\|\//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/
Explicação:
Sintaxe do sed:
sed 's/pattern/replace/modifier' file
Comando:
Divida o comando sed acima, como abaixo, para esclarecimento.
sed 's/\n\|\//g'
s
- pesquisar e substituir. \n\|\
- padrão. \n
corresponde a um literal \n
OU \|
corresponde a um literal \
. Então, primeiro, ele corresponde a todos os \n
na string de entrada e, em seguida, corresponde a \
//
Temos uma peça de substituição vazia, o que significa remover todos os caracteres correspondentes ou substituir os caracteres correspondentes por uma string vazia. g
- modificador global. Faz o jogo acontecer globalmente. ou seja, se dois ou mais símbolos \
estiverem presentes em uma única linha, esse sed 's/\//' file
removerá apenas o primeiro \
de cada linha. Mas o modificador global g
força sed
a corresponder a todos os símbolos \
existentes. Através do GNU sed,
$ sed -r 's/\n|\//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/
Através do Perl,
$ perl -pe 's/\n?//g' <<<"$var"
UEsDBBQAAAAIAKJBWEUdUIwScwwBAAB+AQAgAAAAQ29weV9vZl9kb2N1bWVudF9PY3QtMjQtMjAxNC5leGXsvXlcU0f0N5xAgICBRAVFRaVK3XfAigFFJYALGkSCKItWRMQNMVHrCl6ihGvc6lq1laKta11q3ZcgyKKouG+o2KJeDCoqCgpyn3Pm3ovY5X1/zz/