我正在编写一个sed脚本,用于选择包含[20
的字符串我使用的命令如下:
sed -n "/\[20/p" "C:\test_scripts\new1.txt"
这与mks工具包中的sed一起使用。但是,当我尝试在Cygwin中使用sed时,我收到以下错误:
sed: -e expression #1, char 6: unterminated address regex
答案 0 :(得分:2)
猜测,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 ...
shell不应该混淆单引号内的材料。加倍反斜杠是处理反斜杠丢失问题的传统方法。如果其他任何一个工作,使用sed脚本文件在上下文中是过度的,但也会阻止shell搞乱sed脚本中的内容。