【发布时间】:2015-10-09 18:42:48
【问题描述】:
我是 shell 脚本和sed 命令的新手。
以下sed 命令在 Solaris 中运行,但在 Linux 中出错:
sed -n 's/^[a-zA-z0-9][a-zA-z0-9]*[ ][ ]*\([0-9][0-9]*\).*[/]dir1[/]subdir1\).*/\2:\1/p'
错误是:
sed: -e expression #1, char 79: Invalid range end
我不知道为什么它会给出无效的范围结束错误。
【问题讨论】:
-
字符范围
A-z包括 所有 个字符,其 ASCII 值介于A和z之间。这包括上下 alpha,以及[、]、\、^、_和反引号。这可能不是故意的,是吗? -
@Mr.Llama 是的,这不是故意的。一旦我将 A-z 更改为 A-Z,它现在就可以工作了
-
[a-zA-z0-9]等价于[[:alnum:]](是的,带双括号) -
如果您需要 Solaris 和 Linux 之间的 sed 语法一致,最好在您的 Solaris 系统上安装 GNU sed。
标签: regex linux bash shell sed