小智 133
您可以使用-bsed选项将文件视为二进制文件.这将解决cygwin在Windows上的问题.
例: sed -b 's/foo/bar/'
如果您希望匹配行尾,请记住匹配,捕获和复制可选回车符.
例: sed -b 's/foo\(\r\?\)$/bar\1/'
从sed手册页:
-b - 二进制
此选项在每个平台上都可用,但仅在操作系统区分文本文件和二进制文件时才有效.当进行这样的区分时 - 就像MS-DOS,Windows的情况一样,Cygwin文本文件由回车符和换行符分隔的行组成,而sed看不到结束CR.当指定此选项时,sed将以二进制模式打开输入文件,因此不请求此特殊处理并考虑以换行结束行.
Sie*_*geX 10
您可以尝试在现有脚本的末尾分配\nfor \r\n,如下所示:
sed 's/foo/bar/;s/$/\r/'
Run Code Online (Sandbox Code Playgroud)
也许
sed -e 's/foo/bar/' -e 's/$/\r/'
Run Code Online (Sandbox Code Playgroud)
如果以上两者都不起作用,则必须查阅您的版本的特定手册页sed以查看是否存在此类选项.需要注意的是的*nix的版本sed都没有改变行终止,而不被告知这样做.
另一种方法是使用cygwin的版本,sed它不应该有这种不良行为.
| 归档时间: |
|
| 查看次数: |
20638 次 |
| 最近记录: |