3

今日正規表現について読み始めたばかりで、以下でやろうとしていることが可能かどうか質問がありますか?

電話番号を含むファイルがあり、一部は (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を使って研究してきましたが、今のところ何もありません。私は初心者です..

ご協力いただきありがとうございます。

4

5 に答える 5

1

を失い、条件付きgrepですべてを行うsed

sed '/^([0-9][0-9][0-9])/! s/^/(000) /' testfile > newtestfile
于 2013-08-31T05:51:31.063 に答える