我正在学习 Linux 上的 sed s/regexp/replacement/ 命令。
phone.txt 中有一些号码
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(777)555-1217
Run Code Online (Sandbox Code Playgroud)
我想使用正则表达式(我已经在https://www.freeformatter.com/regex-tester.html上测试过)
(\(555\))(.*-)(.*$)
Run Code Online (Sandbox Code Playgroud)
匹配以 (555) 开头的数字。然后我希望这些匹配数字的这三个部分的输出为:(数字 (555)555-1212 的示例)
Area code: (555) Second: 555- Third: 1212
Run Code Online (Sandbox Code Playgroud)
我尝试了以下命令:
cat phone.txt | sed 's/\(\\\(555\\\)\)\(.*-\)\(.*$)/Area code: \1 Second: \2 Third: \3/'
Run Code Online (Sandbox Code Playgroud)
但系统给了我:
sed: -e expression #1, char 66: Unmatched ( or \(
Run Code Online (Sandbox Code Playgroud)
所有数字的通用命令是:
cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area code: \1 Second: \2 Third: \3/'
Run Code Online (Sandbox Code Playgroud)
来源: https: //www.tutorialspoint.com/unix/unix-regular-expressions.htm
但我只想对以 (555) 开头的数字执行 sed ,并通过后向引用将其添加到输出中。
你能告诉我如何正确地编写这个特殊命令吗?