如何在 unix ed(1) 中搜索控制字符?
例如
ed somefile.log <<EOF
1,$s/.*\015//
w
q
EOF
不起作用。\r 也不行。显然 sed(1)、awk(1) 和其他编辑器可以做到这一点,但是 ed 有一个非常有用的 line move (m) 命令,这是我在使用的 bash 脚本中所需要的。
我可以通过直接输入控制字符在脚本中完成我想要的操作(例如,在 vi 中用 Cv 转义,在 emacs 中用 Cq 转义),但这意味着二进制字符必须存在于我的其他可打印文本脚本中。
ed Transport2SVN-W0177.log <<EOF
g/^M/s/.*^M//p
w
q
EOF
^M 实际上是字符 0x0d。