Есть ли команда Bash для преобразования \r \n в \n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все заработало.
Есть ли команда Bash для преобразования \r \n в \n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все заработало.
Есть:
dos2unix
Существует утилита Unix под названием conv которая может преобразовывать окончания строк. Он часто вызывается с softlinks к 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.
Делать это с POSIX сложно:
POSIX Sed не поддерживает \r или \15 . Даже если это так, опция -i на месте не POSIX
POSIX Awk поддерживает \r и \15 , однако опция -i inplace не POSIX
d2u и dos2unix не POSIX утилит , но ех
POSIX ex не поддерживает \r , \15 , \n или \12
Чтобы удалить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Чтобы добавить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Использование man 1 ed (который редактирует файлы на месте без какой-либо предыдущей резервной копии - в отличие от: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Да, используйте dos2unix . Например:
[justin@mybox ~]$ dos2unix myfile