Есть:
dos2unix
Есть ли команда Bash для преобразования \ r \ n в \ n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все заработало.
Есть:
dos2unix
Существует утилита Unix, conv
которая может преобразовывать окончания строк. Он часто вызывается с помощью мягких ссылок на u2d
или d2u
или unix2dos
или или dos2unix
.
Дополнительно есть утилиты под названием fromdos
и todos
.
С помощью sed и найдите конец .txt, .php, .js, .css
:
sed -rie 's/\r\n/\n/' \ $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")
Translate ( tr ) доступен во всех Unixes:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
Doing this with POSIX is tricky:
POSIX Sed does not support \r
or \15
. Even if it did, the in place option -i
is not POSIX
POSIX Awk does support \r
and \15
, however the -i inplace
option is not POSIX
d2u and dos2unix are not POSIX utilities, but ex is
POSIX ex does not support \r
, \15
, \n
or \12
To remove carriage returns:
awk 'BEGIN' file
To add carriage returns:
awk 'BEGIN' file
Использование man 1 ed (который редактирует файлы на месте без какой-либо предыдущей резервной копии - в отличие от: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Да, используйте dos2unix
. Например:
[justin@mybox ~]$ dos2unix myfile
Вы можете использовать это для массовой замены всех строк в нескольких файлах, которые заканчиваются .html
. Вы можете изменить это, чтобы соответствовать новому имени.
find -iname "*.html" -exec sh -cC ' sed 's/\r\n/\n/' "$1" > "$1" ' {} {} \;