Может проверить Дизъюнктные объединения в F# для большего количества информации о DUs в целом и типе опции (Некоторые, Ни один) в частности. Как в предыдущем ответе говорится, Некоторые - просто случай объединения option< 'a> введите, который является особенно общим/полезным примером алгебраического типа данных.
dos2unix
на машину? sed
или обычный не-GNU sed
? В Solaris для / usr / bin / sed
требуется:
sed 's/$/^M/'
где я ввел '^ M', набрав управление V управление M . '$' Соответствует концу строки и заменяет конец строки на Ctrl-M. Вы также можете использовать скрипт.
Механизмы, ожидающие, что sed
расширит ' \ r
' или ' \\ r
' для control-M, будут в лучшем случае зависит от платформы.
Столкнувшись с этим, я использую простой однострочник perl
:
perl -pi -e 's/\n/\r\n/' filename
, потому что поведение sed
меняется, и я знаю, что это работает.
Параметр -e
не требуется.
$
соответствует символу конечной строки. Эта команда sed
вставит символ \ r
перед концом строки:
sed 's/$/\r/' myfile
Просто добавив \ r
(он же ^ M
, см. Ответ Джонатана Леффлера) перед \ n
небезопасно, потому что файл может иметь EOL смешанного режима, поэтому вы рискуете получить некоторые строки, начинающиеся с \ r \ r \ n
. Безопасно сначала удалить все символы '\ r', а затем вставить (один) \ r
перед \ n
.
#!/bin/sh
sed 's/^M//g' ${1+"$@"} | sed 's/$/^M/'
Обновлено для использования ^ M
.
Может быть, если вы попробуете таким образом,
cat myfile | sed 's/\n/\r\n/g' > myfile.win
сработает, насколько я понимаю, вы просто выполняете замену вывода консоли, вам необходимо перенаправить вывод в файл, в этом case myfile.win, тогда вы можете просто переименовать его как хотите. Весь сценарий будет (выполняется в каталоге, полном таких файлов):
#!/bin/bash
for file in $(find . -type f -name '*')
do
cat $file | sed 's/\n/\r\n/g' > $file.new
mv -f $file.new $file
done