1

如何在 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。

4

1 回答 1

1

ed不提供任何转换控制字符的支持。

您发现将控制字符直接插入脚本(Ctrl-V在键盘上使用)的方式是可移植的并且有效。

的特定实现ed可能支持这一点,但它不是可移植的。

于 2018-05-08T12:40:45.673 回答