Как удалить Ctrl-M из файлов, где dos2unix, жемчуг, TR и sed не присутствуют?

Давным-давно, я устанавливал MkLinux на своем Mac, и я хотел заменить файл, который управлял обработкой команды (не, оболочка, что-то более основное, не помнит вполне что больше). Инструкции, которые, как сказали, сделали mv x y, таким образом, я решил быть осторожным и запущенным с rm y. Намерение было к mv x y впоследствии, но конечно который не работал. Я переустановил.

9
19.09.2012, 22:56
2 ответа

Я думаю, что Вы обращаетесь к удалению каре-M в конце строк. Можно использовать поиск и замену в vi, чтобы сделать это.

В vi я обычно делаю: (где "^" представляет CTRL):

:%s/^V^M//g

Который показывает на экране как:

:%s/^M//g
12
27.01.2020, 20:05
  • 1
    благодарит, который работал :). Я думаю, что это - очень портативное решение. –  Hemant 12.08.2010, 19:06
  • 2
    можно также использовать sed, чтобы сделать то же самое w/out имеющий необходимость к энергии файл: sed-e '%s/^V^M//g' имя файла, Которое также покажет на экране как sed e '%s/^M//g' имя файла В целом, если можно искать/заменять его в энергии, команда, является фактически тем же в sed. –  gabe. 12.08.2010, 22:09
  • 3
    @gabe: sed решением является на самом деле еще больше портативного +1 :) –  wzzrd 12.08.2010, 23:54
  • 4
    @wzzrd, sed и vi и указаны POSIX и этим vi команда не использует расширений Vim. подстановочный знак –  Wildcard 16.04.2016, 05:11
  • 5
    @jjclarkson, что делает ^V и '^M', средний? –  cokedude 29.04.2016, 01:10

Сервер без tr или sed должно было бы быть действительно старым, или пропускающий некоторые основные команды. Надо надеяться, ed есть ли; это существовало в Unix первый выпуск.

ed /path/to/file
1,$s/^V^M$//
w
q

где ^V^M средства, вводящие Ctrl+V затем Ctrl+M (для ввода литеральный перевод строки). Если Вы знаете, что все строки действительно заканчиваются в CR LF, можно использовать 1,$s/.$// вместо этого (без разбора удаляют последний знак на каждой строке).

6
27.01.2020, 20:05

Теги

Похожие вопросы