Заменить специальный символ на sed - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь заменить специальный символ на sed, символ заменяется на;;

Например, строки файла:

0370ÞA020Þ4000011600ÞRED USADOÞ0,00Þ20190414
0370ÞA020Þ4000011601ÞRED USADOÞ0,00Þ20190414
0370ÞA020Þ4000011602ÞRED USADOÞ0,00Þ20190414

Спасибо!

Редактировать

Работает и решается.

Спасибо !!!

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Это работа tr, созданная для выполнения, но посмотрите на эти результаты:

$ tr 'Þ' ';' < file
0370;;A020;;4000011600;;RED USADO;;0,00;;20190414
0370;;A020;;4000011601;;RED USADO;;0,00;;20190414
0370;;A020;;4000011602;;RED USADO;;0,00;;20190414

$ sed 's/Þ/;/g' < file
0370;A020;4000011600;RED USADO;0,00;20190414
0370;A020;4000011601;RED USADO;0,00;20190414
0370;A020;4000011602;RED USADO;0,00;20190414

tr, кажется, рассматривает каждый Þ как 2 повторяющихся символа - sed может думать так же, но пока tr преобразует набор символов в набор символов, sed преобразует регулярное выражение в строку и так что даже если он считает Þ шириной в 2 символа, он все равно будет делать то, что вы хотите. Так что просто интересное предупреждение о попытке использовать tr для замены не-ASCII символов - YMMV!

1 голос
/ 17 апреля 2019

Попробуйте - простая замена для меня

sed 's/Þ/;/g'
0 голосов
/ 17 апреля 2019

если ваши данные в файле 'd', попробуйте gnu sed:

sed -E 'y/Þ/;/' d
...