Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2072787
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-05-28 09:01:08

[] [] [] [] []
  帅哥
精灵王




CU编号: 285506
注册:2005-6-28
最后登录: 2009-05-27
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 17:53 
比如我有一文件名为:data_info
cat data_info
-rw-rw-r--    1 w088     departw  1845553478 Nov 25  2006 IA003512D06064.DAT
-rw-rw-r--    1 w694     departw  1565714246 Nov 21  2006 IA043013D06064.DAT
-rw-rw-r--    1 w088     departw  1163495510 Nov 25  2006 IA045114D06064.DAT
-rw-r--r--    1 w024     departw  2765363200 May 29  2007 IA111115D06064.DAT
-rw-rw-r--    1 w694     departw  1163758790 Nov 22  2006 IA371016D06064.DAT
-rw-rw-r--    1 w024     departw  1021582406 Nov 21  2006 IA391017D06064.DAT
-rw-rw-r--    1 w024     departw  2678940326 Nov 21  2006 IA499012D06064.DAT
-rw-rw-r--    1 w024     departw  3233622542 Nov 29  2006 IA511012D06064.DAT
-rw-rw-r--    1 w085     departw  2875141190 Nov 22  2006 IA620012D06064.DAT
-rw-rw-r--    1 w088     departw  1845569270 Nov 25  2006 IB003519D06064.DAT
-rw-rw-r--    1 w694     departw  1565730038 Nov 22  2006 IB043012D06064.DAT
-rw-rw-r--    1 w088     departw  1162026518 Nov 25  2006 IB045112D06064.DAT
-rw-rw-r--    1 w024     departw  4694125702 Nov 22  2006 IB310012D06064.DAT
-rw-rw-r--    1 w694     departw  1163774582 Nov 22  2006 IB371012D06064.DAT
-rw-rw-r--    1 w024     departw  1020294518 Nov 22  2006 IB391012D06064.DAT
我现在想写个脚本:test.awk
./test.awk data_info -u w088 (或--user w088)显示结果为:
  w088  2D06064
        4D06064
        9D06064
  如何获取w088 这个参数??
  顺问在shell版有人曾经问过,awk中的参数与函数对应的关系,我搜了半天没搜到,能否告知一下,谢谢



您对本贴的看法:
| |
  帅哥 (黑哥)
精灵使



CU编号: 631768
注册:2007-10-22
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 17:57 
回复 #1 addictlinux 的帖子

awk没有-u选项吧?



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


| |

天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 17:58 
awk '$3=="w088"{print $3,substr($NF,8,7)}' file



您对本贴的看法:

__________________________________

shell新手&&awk新手
我的awk学习笔记
http://blog.chinaunix.net/u3/91453/showart_1798635.html
| |

天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 18:01 
参数可以用ARGV[1]  ARGV[2]...
如awk '{...}'   a   b
则在awk中ARGV[1]=a  ARGV[2]=b

example

CODE:
[root@Mylinux tmp]# awk 'BEGIN{print ARGV[1],ARGV[2]}' a 100
a 100

[ 本帖最后由 ywlscpl 于 2009-5-27 18:04 编辑 ]



您对本贴的看法:

__________________________________

shell新手&&awk新手
我的awk学习笔记
http://blog.chinaunix.net/u3/91453/showart_1798635.html
| |
  帅哥 (黑哥)
精灵使



CU编号: 631768
注册:2007-10-22
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 18:13 
估计LZ是指-v v=value这个选项。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


| |
  帅哥
精灵王




CU编号: 690903
注册:2008-4-13
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-5-27 19:00 
回复 #1 addictlinux 的帖子

#!/bin/bash
w088() {
       awk '$3~/w088/{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info
}

w694() {
       awk '$3~/w694/{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info
}

w024() {
       awk '$3~/w024/{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info
}
w085() {
       awk '$3~/w085/{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info
}

# See how we were called.
case "$1" in
  w088)
        w088
        ;;
  w694)
        w694
        ;;
  w024)
        w024
        ;;
  w085)
        w085
        ;;
esac

exit 0


[root@localhost lianshou]# ./test.sh w024
w024 5D0606
     7D0606
     2D0606
     2D0606
     2D0606
     2D0606
     
[root@localhost lianshou]# ./test.sh w694
w694 3D0606
     6D0606
     2D0606
     2D0606

[[i] 本帖最后由 greendays 于 2009-5-27 19:25 编辑 [/i]]



您对本贴的看法:
| |

天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-27 20:53 
回复 #6 greendays 的帖子

写复杂了,根据你的简化了
test.sh

CODE:
awk '$3~"'$1'"{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info

[ 本帖最后由 ywlscpl 于 2009-5-27 20:56 编辑 ]



您对本贴的看法:

__________________________________

shell新手&&awk新手
我的awk学习笔记
http://blog.chinaunix.net/u3/91453/showart_1798635.html
| |
  帅哥
精灵王




CU编号: 690903
注册:2008-4-13
最后登录: 2009-05-28
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-5-28 08:29 
回复 #7 ywlscpl 的帖子

哥们真厉害! 照您的代码:
[root@localhost lianshou]# cat d
#!/bin/bash
awk '$3~"'$1'"{$9=substr($9,8,6);a[$3]=a[$3]$9"\n     ";}END{for(i in a)print i,a[i]}' data_info
[root@localhost lianshou]# ./d w088
w088 2D0606
     4D0606
     9D0606
     2D0606
     
[root@localhost lianshou]# ./d w024
w024 5D0606
     7D0606
     2D0606
     2D0606
     2D0606
     2D0606


阅读(3002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~