如题,file01内容如下:
STD
abc kkk
889.33 64.36
def 888
2000089
文件2:file02内容如下:
889.330 63.360 2000011
999.118 64.289 2000015
746.167 30.457 1860089
....
....现在需要做的是提取file01中的第三行:889.33 64.36 与file02中的内容进行搜索并找出满足有889.33和64.36的行. 并将匹配到的行的第三列值:2000011替换到file01中的第五行去.即用2000011替换2000089
因为类似file01的文件有很多,但格式是一样的,只要进行跟file02的内容进行匹配就可以.需要用到循环.
在这恳请各位大侠帮帮忙看看,先谢过了.
各位高手快来帮我看看这样的文本要如何处理?
-
- 帖子: 45
- 注册时间: 2008-03-22 1:19
- 联系:
- yingfei
- 帖子: 273
- 注册时间: 2007-09-03 18:34
- 来自: 羊城通
Re: 各位高手快来帮我看看这样的文本要如何处理?
代码: 全选
yingfei@~$ cat a
STD
abc kkk
889.33 64.36
def 888
2000089
yingfei@~$ cat b
889.330 64.360 2000011
999.118 64.289 2000015
746.167 30.457 1860089
yingfei@~$ STR=$(grep "`awk '(NR==3){printf "%.03f %.03f",$1,$2}' a`" b | awk '{print $3}'); sed -i -e "5s/.*/$STR/" a
yingfei@~$ cat a
STD
abc kkk
889.33 64.36
def 888
2000011
yingfei@~$
-
- 帖子: 45
- 注册时间: 2008-03-22 1:19
- 联系:
Re: 各位高手快来帮我看看这样的文本要如何处理?
呵呵,太感谢了,我看看
- yingfei
- 帖子: 273
- 注册时间: 2007-09-03 18:34
- 来自: 羊城通
Re: 各位高手快来帮我看看这样的文本要如何处理?
把 a 换成你的 file01 把 b 换成你的 file02
要循环的话就
要求sed版本要支持 -i 参数. 早期的 Unix系统中 Sed 不支持这个参数的。这时可以考虑用 perl.
要循环的话就
代码: 全选
for F in file* ; do
STR=$(grep "`awk '(NR==3){printf "%.03f %.03f",$1,$2}' $F`" file_02 | awk '{print $3}')
sed -i -e "5s/.*/$STR/" $F
done
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- yingfei
- 帖子: 273
- 注册时间: 2007-09-03 18:34
- 来自: 羊城通
Re: 各位高手快来帮我看看这样的文本要如何处理?
晕的 怎么老连接不上, 害我提交多次, 严重影响RP。。。
请版主删除。。
请版主删除。。
- daf3707
- 论坛版主
- 帖子: 12730
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡