1

まだ電話操作について。以下のような電話番号のリストがあります。

(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934 2368
(898) 731 7056
(899) 251 5372
(855) 137-6285
(855) 294-5537
(844) 680-7479

行番号 5 から 7 の電話番号パターンに「-」がないことに気付いた場合、sed または awk を使用して「-」を挿入するにはどうすればよいですか?

可能であれば、ある種のネストされた sed 条件付き置換を行う必要があるように感じます。

誰でも助けることができますか?

4

4 に答える 4

4

sed2 番目のスペースをハイフンに置き換えるように指示できます。

sed 's/ /-/2' file

結果:

(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934-2368
(898) 731-7056
(899) 251-5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
于 2013-08-31T08:18:27.600 に答える
3

これは、あなたが尋ねた他の質問に近いものです。あなたが持っているものを変更してみてください。

awk '!/-/ {$0=$1 " " $2 "-" $3}1'
(855) 422-6932
(899) 991-9054
(855) 912-7326
(833) 390-8072
(867) 934-2368
(898) 731-7056
(899) 251-5372
(855) 137-6285
(855) 294-5537
(844) 680-7479
于 2013-08-31T07:14:01.813 に答える
1

次の perl ワンライナーを使用します。

perl -pe "s/(\(\d{3}\) \d{3})[ -](\d{4})/$1-$2/g" <in.txt >out.txt

OS とシェルによっては、バックスラッシュと $ 文字を保持するために一重引用符を使用する必要がある場合があります。

于 2013-08-31T07:14:10.717 に答える
1

perl を使用すると、基本的に正しい形式を使用して各行を書き直すことができます。各行に正確に 3 つのグループの数字があると仮定します。

perl -ne 'printf "(%s) %s-%s\n", (/\d+/g)' file

-iファイルのインプレース編集に使用

于 2013-08-31T11:16:09.327 に答える