какой лучший способ конвертировать CRLF's, чтобы переводы строк в файлах в Linux?
Я видел sed команды, но есть ли что-нибудь проще?
какой лучший способ конвертировать CRLF's, чтобы переводы строк в файлах в Linux?
Я видел sed команды, но есть ли что-нибудь проще?
используйте эту команду:
fromdos yourtextfile
иначе:
todos yourtextfile
эти команды находятся в tofrodos пакета (на последних версиях), которая также обеспечивает две обертки unix2dos и dos2unix, которые имитируют старые инструменты unix с тем же именем.
использовать dos2unix
.
dos2unix-DOS / MAC в Unix конвертер текстовых файлов
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...] Options: [-hkqV] [--help] [--keepdate] [--quiet] [--version]
предпочитаю perl:
perl -lne 's/\r//g; print' winfile.txt > unixfile.txt
но это хорошо подходит для моего использования, и мне очень легко запомнить. Не все системы имеют команду dos2unix, но большинство, над которыми я работаю, имеют интерпретатор perl.
другое recode, мощная замена для dos2unix и iconv; он доступен в пакете "recode" в репозиториях Debian:
recode ibmpc..lat1 winfile.txt # dos2unix
recode lat1..ibmpc unixfile.txt # unix2dos
на awk любитель:
awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt
...и sed:
sed 's/\r$//' winfile.txt > unixfile.txt
и теперь, только немного менее запутанный, чем удаление CR вручную в шестнадцатеричном редакторе, прямо из один из наших stackoverflow.com друзья, полезной с говядина interpreter (расположен в дружественном репозитории Debian),
dos2unix in brainfuck!
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
большое спасибо jk за тратить час своей жизни, чтобы написать это!
Я делаю это на Bash:
cat cr_stuffed.file | tr -d \r > no_more_crs.file
Я думаю, что вы можете использовать tr
, а также (хотя у меня нет забавных файлов формата, на которых можно попробовать):
tr -d '\r' < file1 > file2
Я нашел очень простой способ ... открыть файл с Nano: # # nano файл.txt
нажмите Ctrl+O для сохранения, но перед нажатием Enter нажмите: Alt+D для переключения концовок строк между DOS и Unix/ Linux, или: Alt+M для переключения между окончаниями строк на Mac и Unix / Linux затем нажмите Enter для сохранения и Ctrl+X для выхода.
предпочитаю Vim и :set fileformat=unix
. Хотя это не самый быстрый, он дает мне предварительный просмотр. Это особенно полезно в случае файла со смешанными окончаниями.
если вы хотите метод GUI, попробуйте Kate текстовый редактор (другие продвинутые текстовые редакторы тоже могут справиться с этим). Открой найти/заменить диалог (Ctrl+R), и заменить \r\n
с \n
. (NB: вам нужно будет выбрать " регулярное выражение "из выпадающего списка и снимите флажок" только выбор " из опций.)
EDIT: или, если вы просто хотите конвертировать в формат Unix, то используйте опцию меню Tools
> End of Line
> Unix
.
вставить в dos2unix.py скрипт Python.
#!/usr/bin/env python
"""\
convert dos linefeeds (crlf) to unix (lf)
usage: dos2unix.py <input> <output>
"""
import sys
if len(sys.argv[1:]) != 2:
sys.exit(__doc__)
content = ''
outsize = 0
with open(sys.argv[1], 'rb') as infile:
content = infile.read()
with open(sys.argv[2], 'wb') as output:
for line in content.splitlines():
outsize += len(line) + 1
output.write(line + '\n')
print("Done. Saved %s bytes." % (len(content)-outsize))
должно работать на любой платформе с установленным Python. Общественное достояние.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]