csplit 不遵守反斜杠 r \r 作为回车符

csplit 不遵守反斜杠 r \r 作为回车符

我有一个带有行结尾的文件\r\n(CRLF 回车换行符)。

该命令的工作原理:

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3 emailbad.txt '/^\.^M/'+1 '{*}'

这要求我先按CTLR+ V,然后按CTRL+M插入实际的回车符。

我希望它能起作用,这样我就只使用可打印字符(对于 SVN 等)

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3  emailbad.txt '/^\.\r/'+1 '{*}'

我尝试过使用单引号和双引号以及不带引号。欢迎任何建议。

答案1

如果您使用 、ksh93zshbash,则可以使用$'...'ksh 扩展,它在带引号的字符串内执行 C 风格的反斜杠转义解释:

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt $'/^\.\r/+1' '{*}'

否则,您可以使用printf非常类似的方式创建字符串:

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt "$(printf '/^\.\r/+1')" '{*}'

相关内容