0

次の形式のファイルがあります。

random stuff  
more random stuff, etc  
more random stuff, etc   
05201206 field1 field2 field3 field4 field5  
05201212 field1 field2 field3 field4 field5  
05201218 field1 field2 field3 field4 field5  

フィールドは緯度と経度です

私がやりたいのは、「05」で始まり、フィールド 1、3 を取得するすべての行を検索し、次のように、見つかった順序ですべての結果を 1 行に出力することです (KML コードを記述しようとしています)。

field1, field3, 0 field1, field3, 0 field1, field3, 0  field1, field3, 0

また、関連する質問 - sed で数学を実行できますか? 結果を出力する前に、緯度と経度のそれぞれを 10.0 で割るのが理想的です。

4

2 に答える 2

1

で数学を行うことはできませんsedawkフィールドのトークン化と処理に適したツールです。

awk '/^05/{ $4/=10.0;$2/=10.0;out=out$2","$4","}END{print out }' inputFile
于 2012-06-20T11:03:48.573 に答える
0

awksedは明らかに仕事に適したツールですが、タスクの一部には確かに使用できます。フィルターは強力なアイデアです。

<input sed -n /^05/p                    | # print only lines starting "05" 
  awk '{print 0, $2/10", " $4/10", "}'  | # print scaled columns 2 and 4
  sed '1s/^0 //'                        | # Remove leading "0 "
  tr -d '\n'                            ; # Remove all newlines
  echo " 0"                             # append trailing "0" and newline

ここでは、sed はまったく不要であることに注意してください (最初の sed は、最初の awk でパターン マッチに置き換えられます)。要点は、各タスクを実行するための単純なツールを作成し、それらをすべて一緒に実行することで、必要な種類の処理を非常に簡単に構築できるということです。

于 2012-06-20T13:50:03.077 に答える