Chinaunix
标题:
awk打印去掉最后两个域
[打印本页]
作者:
papokaka
时间:
2009-04-20 12:06
标题:
awk打印去掉最后两个域
xxx.xxxx.xxxx.tar.bz
我想输出的是
xxx.xxxx.xxxx
即去掉后边的两个域,请问用awk如何实现
作者:
wtuter
时间:
2009-04-20 12:08
标题:
回复 #1 papokaka 的帖子
$NF=""
$(NF-1)=""
作者:
papokaka
时间:
2009-04-20 12:11
谢谢@@
$echo AIX.PI6002.090316.tar.Z | awk -F "." '{$NF="";$(NF-1)=""}{print $0}'
AIX PI6002 090316
作者:
blackold
时间:
2009-04-20 12:11
标题:
回复 #1 papokaka 的帖子
awk -F . 'NF-=2' urfile
作者:
ywlscpl
时间:
2009-04-20 12:12
[root@Mylinux tmp]# echo "xxx.xxxx.xxxx.tar.bz" | awk '{print gensub(/(.*)\.[^\.]+\.[^\.]+/,"\\1",1)}'
xxx.xxxx.xxxx
作者:
papokaka
时间:
2009-04-20 12:12
变成这样子了耶
echo AIX.PI6002.090316.tar.Z | awk -F "." '{$NF="";$(NF-1)=""}{OFS="."}{print $0}'
AIX.PI6002.090316..
作者:
papokaka
时间:
2009-04-20 12:18
标题:
回复 #5 ywlscpl 的帖子
可以有不用gensub函数的方法吗
作者:
ywlscpl
时间:
2009-04-20 12:19
没gensub的话
[root@Mylinux tmp]# echo AIX.PI6002.090316.tar.Z | awk '{print substr($0,1,match($0,/\.[^\.]+\.[^\.]+$/)-1)}'
AIX.PI6002.090316
或者
[root@Mylinux tmp]# echo AIX.PI6002.090316.tar.Z | awk -F "." '{for (i=1;i<NF-2;i++) printf $i".";print $(NF-2)}'
AIX.PI6002.090316
[
本帖最后由 ywlscpl 于 2009-4-20 12:23 编辑
]
作者:
greendays
时间:
2009-04-20 12:22
标题:
回复 #1 papokaka 的帖子
[root@Greendays lianshou]# echo "xxx.xxxx.xxxx.tar.bz" | awk -F"." '{print $1"."$2"."$3}'
xxx.xxxx.xxxx
作者:
blackold
时间:
2009-04-20 12:22
try:
awk 'NF-=2' FS=. OFS=. urfile
复制代码
作者:
ywlscpl
时间:
2009-04-20 12:25
原帖由
blackold
于 2009-4-20 12:22 发表
try: awk 'NF-=2' FS=. OFS=. urfile
学习学习
作者:
greendays
时间:
2009-04-20 12:26
引用黑哥的代码
[root@Greendays lianshou]# echo "xxx.xxxx.xxxx.tar.bz" | awk -F . 'NF-=2' | sed 's/ /./g'
xxx.xxxx.xxxx
作者:
papokaka
时间:
2009-04-20 12:43
标题:
回复 #9 greendays 的帖子
。。。。不知道前面有几个域
作者:
greendays
时间:
2009-04-20 12:51
标题:
回复 #13 papokaka 的帖子
[root@Greendays lianshou]# echo "xxx.xxxx.xxxx.tar.bz" | awk -F. 'NF-=2' OFS=.
xxx.xxxx.xxxx
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2