Remover caracteres especiais no final da linha no arquivo unix

0

Eu tenho um arquivo csv que tem um delimitador ~@~~@~ e, às vezes, ~@~ . Mesmo conjunto de caracteres especiais ~@~~@~ (não sei quantos, mas ~@~~@~ *) aparecem no final da linha, que é um campo de data. Então, os dados no arquivo são como

ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@[email protected]~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~\n

Eu preciso remover os caracteres do campo Last Date para End of line. Eu tentei sed 's/~@~~@~~@~\n*//g' File name>Replacedfilename.txt , mas mantém um conjunto de caracteres especiais no final. Por favor, forneça seus insumos

    
por Manju 14.12.2017 / 20:32

3 respostas

3

... | sed 's/\(~@~\)*$//'

para remover qualquer número de ~@~ no final da linha (supondo, é claro, que \n em sua amostra represente a nova linha de finalização de linha, e não uma barra invertida literal e N minúsculo.)

ou em sed s que suportam -E para expressões regulares estendidas:

... | sed -E 's/(~@~)+$//' 

ou você pode usar awk -F'~@~' e manipular os campos necessários ao mesmo tempo.

    
por 14.12.2017 / 21:10
0

Supondo que os dados acima estão no arquivo f1.txt . Podemos usar o comando sed e remover todas as ocorrências de ~@~~@~ e ~@~ . Eu substituí-lo com um espaço em branco.

sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt

Resultado

ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 [email protected] B  6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000
    
por 14.12.2017 / 21:57
-1
cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'

o primeiro sed remove a string ~@~~@~ e o segundo sed remove o último ~@~

    
por 14.12.2017 / 20:45

Tags