2016-04-12 9 views
0

フィールド区切り文字を使用してAWKのフィールドを分割することができますが、区切り文字なしの文字列に関する質問があります。私は、データを次のように処理する必要がある、と私は起動するかどうかはわかりません。AWKまたはPERLを使用して文字列を分割する

[email protected] 
[email protected]rWayAlamosa81101 
[email protected]polis55403 
[email protected]dAlbuquerque87122 
[email protected]acey98513 
[email protected] 
[email protected]5212 
[email protected]oines50021 
[email protected]veWaySandiego91210 

私はこれに生データをフォーマットします:

Ryan Wehe, 989-98-7412 
2001 Blake St 
Denver, CO 80205 
[email protected]  
(202) 555-0126 

Joseph Lee, 605-49-7184 
5986 Budweiser Way 
Alamosa, CO 81101 
[email protected] 
(303) 555-0103 

AmyJohnson, 783-33-3251 
14 N 5th St 
Minneapolis, MN 55403 
[email protected] 
(651) 555-0164 
+0

Awkを使用する*がありますか、または任意の言語を使用できますか? –

+0

AWKとPERLのコンボを使用することができます –

+0

それはあなたのために働いたのですか?あなたは決して答えを受け入れませんでした。 –

答えて

2

私の知る限りでは、Awkのキャプチャグループを使用してフィールドセパレータを定義することは容易ではありません。

私は迅速なハックは、あなたの最良の選択肢かもしれないと思うこのことを考慮に

これを返す
cat addresses.txt | perl -ne '/([A-Z][[:lower:]]*)([A-Z]*[[:lower:]]*)([0-9]{9})(.*?\.\w{2,3})([0-9]{10})(.*?)([0-9]{5})/ && print "$1 $2 $3 $4 $5 $6\n"' 

Ryan Wehe 989987412 [email protected] 2025550126 CO2001BlakeStDenver 80205 
Joseph Lee 605497184 [email protected] 3035550103 CO5986BudweiserWayAlamosa 81101 
Amy Johnson 783333251 [email protected] 6515550164 MN14N5thStMinneapolis 55403 
Daniel JEverhard 314849866 [email protected] 5059358554 NM8830JohnsonRdAlbuquerque 87122 
Philip EPeterson 325764011 [email protected] 4561238888 WA 54246 
Matt VNulk 124085733 [email protected] 2093865442 KSManhattanStRiley 87512 
Brandon TLyons 123456123 [email protected] 5755595459 AZ635WElmStMesa 85212 
Roger ATurtle 983421567 [email protected] 8587754321 IA3400SWIslanDrdDesmoines 50021 
Marc JWhiz 745629754 [email protected] 6195323200 CA215NCollegeGroveWaySandiego 91210 

あなたが必要な場合、私はわからないだったので、あなたの答えは、両方のフォーマットを使用しています(つまり、RyanWeheの代わりにRyan Wehe)を区別するために、これに調整するのはかなり厳しいです。

+0

ありがとう、これは私が見た最高です、私はこれを使用します。どうもありがとうございました! –

関連する問題