sed中无标志运行的方法?

sed中无标志运行的方法?,sed,Sed,我在为考试而学习 有如下示例问题: s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/ (123) 123-2345 (123) 111-2345 (111) 222-2345 (222) 333-2345 111 123-3423 (XXX) 123-2345 (XXX) 555-2345 (XX

我在为考试而学习

有如下示例问题:

s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/
(123) 123-2345
(123) 111-2345
(111) 222-2345
(222) 333-2345
111 123-3423
(XXX) 123-2345
(XXX) 555-2345
(XXX) 555-2345
(XXX) 111-2345
111 123-3423
编写一个sed命令,该命令接受电话号码并更改前缀 至555仅适用于区号111和222。将括号中的所有区号更改为XXX作为测试提交。sed

所以我编码如下

test.sed:

s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/
(123) 123-2345
(123) 111-2345
(111) 222-2345
(222) 333-2345
111 123-3423
(XXX) 123-2345
(XXX) 555-2345
(XXX) 555-2345
(XXX) 111-2345
111 123-3423
file.txt:

s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/
(123) 123-2345
(123) 111-2345
(111) 222-2345
(222) 333-2345
111 123-3423
(XXX) 123-2345
(XXX) 555-2345
(XXX) 555-2345
(XXX) 111-2345
111 123-3423
输出:

s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/
(123) 123-2345
(123) 111-2345
(111) 222-2345
(222) 333-2345
111 123-3423
(XXX) 123-2345
(XXX) 555-2345
(XXX) 555-2345
(XXX) 111-2345
111 123-3423
我以前运行的命令:

s/\(([0-9]{3})\)[[:space:]](111|222)-([0-9]{4})/(XXX) 555-\3/;s/\(([0-9]{3})\)[[:space:]]([0-9]{3})-([0-9]{4})/(XXX) \2-\3/
(123) 123-2345
(123) 111-2345
(111) 222-2345
(222) 333-2345
111 123-3423
(XXX) 123-2345
(XXX) 555-2345
(XXX) 555-2345
(XXX) 111-2345
111 123-3423
sed-E-f test.sed file.txt

在我处理这个示例问题时,我想到了检查它的人是如何检查这个的。因为如果是真正的考试,我只会提交test.sed文件,我不能告诉他/她必须使用-E和-f标志来测试这个程序。但在现实中,并没有这样的机会在考试中说出这样的事情

我只是不知道他们是如何从自己的角度来检验这一点的。 他们可能只需输入sed-f test.sed file.txt就可以运行它,但可能会错过-E这样的标志


有没有一种方法可以不用那些-E-f标志来做这类事情?我试着不使用这两个标志,但它就是不起作用。或者这个问题是否意味着我必须制作包含-E-f标志的standalone.sed?但这是可能的吗?

因为它被要求作为
test.sed提交
,所以可以使用
-f
标志。。。至于
-E
你可以用BRE来代替。。或者可能需要有
#/bin/sed-Ef
作为第一行,这样它就可以作为
/test.sed file.txt
执行,因为它被要求作为
test.sed提交。sed
使用
-f
标志。。。至于
-E
你可以用BRE来代替。。或者可能需要有
#/bin/sed-Ef
作为第一行,因此它可以作为
/test.sed file.txt