2016-03-19 3 views
1

各行はデータベースレコードに対応するテキストファイルを持っており、awkでさまざまなことをしています。 1つのフィールドを除いて、すべてがうまく動作します:1つのフィールドのうち、関連するデータのみを保持することを望みます。これは正規表現に相当します。与えられたデータの例を以下に示します。私は123.75のような部分だけを残したいと思っています(彼らは航空通信の周波数です。 2行目と3行目は、すべての行の出力がどのように表示されるかです。どのようにしてawk内で、1つのフィールド(この場合$ 3)から不要な部分を破棄できますか?awk:reg.expに対応するフィールドの一部のみを保持

50.728901147531914, 2.2349750264486374,Auto-info 123.5 
50.33727106924861, 2.9927873611450195,123.500 
53.2102778,07.9886111,123.500 
53.4197222,07.9044444,123.500 Waterkant Start 
53.4813889,07.6516667,123.500; Wittmund TWR 118.725 
51.8219444,06.2744444,123.350; 123.150; 123.500 
51.4291667,07.6436111,123.500 
50.9972222,07.3775000,129.950; 123.500; 123.150 
52.9566667,07.5569444,123.500 Steinberg Info 
51.3027778,07.9791667,123.500 
51.4733333,07.6450000,123.450; 123.500 

答えて

1

使用awkをあなたが行うことができます:

awk -F'[;,][[:blank:]]*' -v OFS=, '{ 
    gsub(/^[^[:digit:]]*|[^[:digit:]]*$/, "", $3) 
} 
NF>3 { 
    gsub(/^[^[:digit:]]*|[^[:digit:]]*$/, "", $4) 
} 1' file 

50.728901147531914,2.2349750264486374,123.5 
50.33727106924861,2.9927873611450195,123.500 
53.2102778,07.9886111,123.500 
53.4197222,07.9044444,123.500 
53.4813889,07.6516667,123.500,118.725 
51.8219444,06.2744444,123.350,123.150,123.500 
51.4291667,07.6436111,123.500 
50.9972222,07.3775000,129.950,123.500,123.150 
52.9566667,07.5569444,123.500 
51.3027778,07.9791667,123.500 
51.4733333,07.6450000,123.450,123.500 
+1

GSUBは私が欠けていたものです - ありがとう! –

関連する問題