我今天刚刚开始阅读有关正则表达式的信息,我有一个问题,如果我在下面尝试做的事情是可能的?
我有一个包含电话号码的文件,有些是 (xxx) xxx-xxxx 格式,但有些是 xxx-xxxx 格式。
例如电话簿:
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
934-2368
731-7056
251-5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
所以目标是在所有不是 (xxx) xxx-xxxx 格式的行中添加 (000)。
到目前为止,我所做的基本上是对输出进行 grep 并将它们写入与正则表达式模式匹配的新文件中,然后进行另一个 grep 输出,但这次不匹配正则表达式并将其附加到同一个文件中;如下。
grep "([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}" testfile > newtestfile ; grep -v "([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}" testfile | sed 's/^/(000) /' >> newtestfile
但这实际上会改变列表的顺序,因为新文件变为
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(855) 137-6285
(855) 294-5537
(844) 680-7479
(000) 934-2368
(000) 731-7056
(000) 251-5372
有没有办法在不改变顺序的情况下做到这一点?我一直在研究使用 sed、awk 和 nl,但到目前为止还没有。我是菜鸟。。
谢谢你的帮助。