Самый быстрый и самый основной способ заменить «\ r \ n» на «\ n» в файле?

11

Я предполагаю, что trэто более основной метод и, следовательно, возможно более быстрый способ заменить вещи в данном файле.

Однако tr может заменить только одинаковое количество символов. смысл...

2 символа могут быть заменены только 2 символами, что означает замену

\r\nс не \nможет быть рассмотрено черезtr

следующий лучший вариант sed?

является СЭД наиболее ядра и быстрым способом замены \r\nс \nв файле , учитывая отсутствие возможностей в тре?

хотел бы пример, если это возможно.

user73235
источник
Что именно означает «Мост ядро»?
Кит Томпсон

Ответы:

23

С помощью sedвы можете сделать:

sed 's/\r$//'

То же самое можно сделать tr, вам нужно только удалить \r:

tr -d '\r'

хотя это удалит все экземпляры \r, не обязательно с последующим \n.

cuonglm
источник
2
Эти два не идентичны. Первый с заменой '\ r \ n' на '\ n' (эффективно), но второй удалит все '\ r', где бы они ни появлялись. Возврат каретки редко появляется в текстовом файле, кроме как в конце строки, но это может произойти.
Ams
4

ИЛИ использовать dos2unix

например:

$ echo -ne "1\r\n2" |  od -A n -t x1
 31 0d 0a 32
$ echo -ne "1\r\n2" | dos2unix | od -A n -t x1
 31 0a 32

мы можем увидеть заменить \r\nна\n

بارپابابا
источник
Это не программа в списке OP, но, на мой взгляд, самый чистый способ сделать работу. Я лично использую его каждый раз, когда мне нужно такое преобразование.
рüффп