我在windows上使用sed以unix样式格式删除一些多余的行(\n行结尾).不幸的是,sed替换了这些行结尾,即使它没有更改为\ r \n的行.我怎么能阻止sed做这件事?
我的sed是一个简单的sed-for-windows-standalone-exe:
C:\dev>sed --version
super-sed version 3.59
based on GNU sed version 3.02.80
Run Code Online (Sandbox Code Playgroud)
GNU sed(http://gnuwin32.sourceforge.net/packages/sed.htm)具有"二进制模式"的-b选项,即不用\ r \n替换\n.
如果你使用cygwin附带的sed,它通常使用二进制模式,即使没有-b选项.即,cygwin命令使用输入文件路径来决定它们是以文本模式还是二进制模式运行,即输出\ r \n或\n:http://www.cygwin.com/cygwin-ug-net/using-textbinary .html.正如文档所说,二进制模式是MS-DOS路径名的默认模式,根据我的经验,默认安装的文件系统也以二进制模式安装.
如果您添加参数 -b,您会将文件视为二进制文件,并且不会更改您的行尾。该手册指出:
-b, --binary
open files in binary mode (CR+LFs are not processed specially)
Run Code Online (Sandbox Code Playgroud)
我不知道如何在 Windows 上使用 sed 做到这一点,但你尝试过吗:
unix2dos you_file
sed ...
dos2unix you_file
Run Code Online (Sandbox Code Playgroud)