我正在编写一个 sed 脚本,它选择包含 [20
我正在使用的命令如下:
sed -n "/\[20/p" "C:\test_scripts\new1.txt"
这与 mks 工具包中的 sed 一起使用。但是,当我尝试在 Cygwin 中将其与 sed 一起使用时,出现以下错误:
sed: -e expression #1, char 6: unterminated address regex
猜测一下,Cygwin shell 正在删除sed
脚本中的反斜杠,因此该sed
命令正在查看/[20/p
应该生成您所看到的错误消息的内容。您可以使用以下任一方法来确认这一点:
set -x
sed -n "/\[20/p" ...
set +x
或者:
echo sed -n "/\[20/p" ...
这些应该向您展示sed
程序看到的内容(set -x
符号可能会将整个参数包含在单引号中)。
几种可能性,其中大多数应该有效:
sed -n '/\[20/p' ...
sed -n "/\\[20/p' ...
sed.script
) 以包含/\[20/p
(一行),然后运行:sed -n -f sed.script ...
外壳不应与单引号内的材料混淆。将反斜杠加倍是处理反斜杠丢失问题的传统方法。如果其他任何一个都有效,则在上下文中使用 sed 脚本文件是多余的,但也可以防止 shell 弄乱 sed 脚本中的内容。