【发布时间】:2018-09-30 10:39:26
【问题描述】:
我一直在尝试创建一个 sed 脚本,它读取电话号码列表并仅打印符合以下方案的电话号码:
- +1(212)xxx-xxxx
- 1(212)xxx-xxxx
我是一个绝对的初学者,但我尝试编写一个 sed 脚本,该脚本将使用-n -r 标志为我打印此内容(其内容如下):
/\+1\(212\)[0-9]{3}-[0-9]{4}/p
/1\(212\)[0-9]{3}-[0-9]{4}/p
如果我直接在 sed 中运行它,它可以正常工作(即 sed -n -r '/\+1\(212\)[0-9]{3}-[0-9]{4}/p' sample.txt 按预期打印匹配的行。这在我编写的 sed 脚本中不起作用,而是 sed 说:
sed: -e 表达式#1, char 2: 命令后的多余字符
我找不到好的解决方案,这个错误似乎有很多原因,我找到的答案都不能在这里轻松应用。
编辑:我用sed -n -r script.sed sample.txt 运行它
【问题讨论】:
-
脚本的正文贴在上面。 @RedCricket
-
您没有发布您使用的命令。从文件运行时是否忘记了
-f? -
我没有使用-f,我不知道这是@thatotherguy
-
tip,用于覆盖
/\+?1\(212\)[0-9]{3}-[0-9]{4}/p的单个表达式