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,然后按照找到的顺序将结果全部打印到一行上,例如:(尝试编写KML代码)

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

另外,相关问题 - 数学可以在 sed 中完成吗?理想情况下,在打印结果之前,每个 lats 和 lons 都应该除以 10.0。

4

2 回答 2

1

你不能在sed. awk是标记和处理字段的正确工具。

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

awk显然是适合这项工作的工具,但您当然可以sed用于部分任务。过滤器是一个强大的想法:

<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

请注意,这里的 seds 完全是多余的(第一个肯定会被第一个 awk 上的模式匹配替换);关键是您可以通过构建简单的工具来完成每项任务并将它们一起运行,从而非常轻松地构建您想要的那种处理方式。

于 2012-06-20T13:50:03.077 回答