|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Kirill Nuzhdin 2:5020/400 27 Apr 2005 15:26:47 To : Dmytro Rud Subject : Re: Замена по тексту --------------------------------------------------------------------------------
Dmytro Rud wrote:
> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> writes:
>
>
>> RNA> Как мне заменить строку (hex) 0D 5C 0A (то есть \r\\\n) на (hex)
>> RNA> 5C 72 (литерал "\r")?
>>
>>awk -v RS='' '{gsub(/\r\\\n/,"\\r"); print}'
>
>
> Когда символы 0D 5C 0A -- последние байты в файле или когда за ними идёт
> n символов 0A, то они почему-то не заменяются (а хвост из символов 0A --
> отрезается). Штатный awk из 5.3 и gawk из портов ведут себя в этом
> отношении одинаково. Поведение gawk исправляется установкой переменной
> RS в символ, о котором известно, что его не может быть в тексте
> (например, '\0') и до кучи -- переменной ORS в '', чтобы в конце не
> выводился лишний '\n'. Что делать со штатным awk -- я не нашёл.
>
книжка по гавку:
"Advanced Notes: RS = "\0" Is Not Portable
...
All other awk implementations store strings internally as C-style
strings. C strings use the NUL character as the string terminator. In
effect, this means that RS = "\0" is the same as RS = "". (d.c.)"
а почему нельзя сделать, например, так:
awk 'BEGIN{RS="\r\n"} 1' filename
?
--
Best regards,
Kirill Nuzhdin
--- ifmail v.2.15dev5.3
* Origin: MSU (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577ad881e2d.html, оценка из 5, голосов 10
|