请教如何截取文件

讨论其他BSD项目及其衍生品,如:FreeBSD,DragonFlyBSD,PC-BSD,DesktopBSD,FreeNAS,NAS4Free,m0n0wall,pfSense,pacBSD,OpenDarwin...
回复
chenjun
铁 Fe
帖子: 56
注册时间: 2010-08-31 17:38

请教如何截取文件

帖子 chenjun » 2011-03-10 10:08

请教一个问题,如何截取如下文件

代码: 全选

192.168.0.166.54800 192.168.0.167.80
192.168.0.166.49477 192.168.0.167.21
让他输出成如下文件

代码: 全选

192.168.0.166 192.168.0.167 80
192.168.0.166 192.168.0.167 21
大伙帮忙看看,能实现不

chenjun
铁 Fe
帖子: 56
注册时间: 2010-08-31 17:38

帖子 chenjun » 2011-03-10 12:07

问题解决了,有两种方法可以实现预期的效果
方法一:

代码: 全选

sed 's/\.[0-9]\+//4;s/\./ /7'
方法二:

代码: 全选

awk -v FS="[.| ]" '{sub(FS $5,"");sub(FS $NF," "$NF)}1'
我原本是想参考别人给的例子,自己来截取文件如

代码: 全选

Nov 20 13:34:09.4438 192.168.0.166.54800 192.168.0.167.80:
成为

代码: 全选

Nov 20 13:34:09.4438 192.168.0.166 192.168.0.167 80
但发现功力不够,还是通过其他高手的帮忙得以解决

代码: 全选

sed 's/\.[0-9]*//5; s/\.\([0-9]*\):$/ \1/'
自己刚接触shell命令这块,还不是太熟,上面具体如何实现的我还不能解释的太清楚,但发现awk,sed,cut这些命令真的很神奇,自己要好好学习一下

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2011-03-10 12:42

羡慕一下,目前还没有玩shell的功力。

wkx9dragon
锌 Zn
帖子: 493
注册时间: 2010-02-02 18:00

帖子 wkx9dragon » 2011-03-10 19:57

对于这个例子,这条命令就可以了。
sed -e "s/\.[0-9]\{5\}//;s/\./ /7"

回复

在线用户

正浏览此版面之用户: 没有注册用户 和 1 访客