2016-03-19 12 views
1

Bir metin dosyası var, her satır bir veritabanı kaydına karşılık geliyor ve awk ile çeşitli şeyler yapıyorum. Tek bir nokta hariç, her şey çok iyi çalışıyor, sadece ilgili verileri tutmayı diliyorum; ve bu düzenli bir ifadeye karşılık gelir. Verilen verilere bir örnek aşağıdadır, sadece 123.75 gibi parçaları tutmak isterim (havacılık komiteleri frekanslarıdır; herkes merak etmeli). İkinci ve üçüncü satır, çıktı tüm satırlar için nasıl görünmelidir. Kaçık olarak, istenmeyen alanlardan bir alandan nasıl kurtulabilirim (bu durumda 3 dolar)?awk: bir alanın yalnızca bir kısmını saklayın. Bir reg.exp'ye karşılık gelen bir

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 

cevap

1

kullanma awk Yapabileceğiniz:

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 ben eksikti budur - teşekkürler! –

İlgili konular