Preserve line endings

后端 未结 5 1441
耶瑟儿~
耶瑟儿~ 2020-12-02 11:53

I run sed to do some substitution on windows and I noticed that it automatically converts line endings to Unix (\\n). Is there an option to tell sed to use Windows line endi

5条回答
  •  星月不相逢
    2020-12-02 12:23

    You can use the -b option for sed to have it treat the file as binary. This will fix the problem with cygwin's sed on Windows.

    Example: sed -b 's/foo/bar/'

    If you wish to match the end of the line, remember to match, capture and copy the optional carriage return.

    Example: sed -b 's/foo\(\r\?\)$/bar\1/'

    From the sed man page:

    -b      --binary

    This option is available on every platform, but is only effective where the operating system makes a distinction between text files and binary files. When such a distinction is made—as is the case for MS-DOS, Windows, Cygwin—text files are composed of lines separated by a carriage return and a line feed character, and sed does not see the ending CR. When this option is specified, sed will open input files in binary mode, thus not requesting this special processing and considering lines to end at a line feed.`

提交回复
热议问题