Bash SED:将多行中的选择字段合并为一行

Bash SED:将多行中的选择字段合并为一行,bash,scripting,sed,awk,Bash,Scripting,Sed,Awk,我有以下格式的文件: 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”开头的行,从每行中提

我有以下格式的文件:

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代码)


还有,相关的问题——数学可以在sed中完成吗?理想情况下,在打印结果之前,每个LAT和LON都应该除以10.0。

您不能在
sed
中进行数学运算
awk
是标记和处理字段的正确工具

awk '/^05/{ $4/=10.0;$2/=10.0;out=out$2","$4","}END{print out }' inputFile

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
同意--
awk
是此处的适当命令。
<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