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

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-08-06 14:25:28


侠客




CU编号: 836395
注册:2009-6-10
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:18 

a:b
c:d
用awk如何输出如下格式
a
c
b
d



您对本贴的看法:
| | |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-08-06
帖子:
精华:0







来自:长春
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:23 

tr : '\n' < urfile



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| | |
  帅哥
风云使者




CU编号: 165273
注册:2004-6-16
最后登录: 2009-08-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:24 

tr -s ":" "\n" < file



您对本贴的看法:

__________________________________

a huge one-time effort gives you nothing, while small, everyday activities will give you a lot
| | |
  帅哥
风云使者




CU编号: 165273
注册:2004-6-16
最后登录: 2009-08-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:26 

one more solution:

awk -F':' '{print $1"\n"$2}' file



您对本贴的看法:

__________________________________

a huge one-time effort gives you nothing, while small, everyday activities will give you a lot
| | |

大天使



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







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:28 

awk -v RS='\n|:' '1' file



大天使



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







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:44 



CODE:
[root@Mylinux tmp]# awk -F ":" '{print $1;v=v?v"\n"$2:$2}END{print v}' file
a
c
b
d




您对本贴的看法:

__________________________________
(同态)
风云使者



CU编号: 451045
注册:2006-8-7
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:46 

gawk -v FS=":" '{a[$1]=1;b[$2]} END{for(i in a) print i; for(j in b) print j;}' file.txt



您对本贴的看法:
| | |

大天使



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







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:52 

回复 #13 yy_galois 的帖子

awk数组是hash数组,顺序会乱的,此题刚好没乱

CODE:
[root@Mylinux tmp]# cat file
a:b
c:d
1:xxx
[root@Mylinux tmp]# gawk -v FS=":" '{a[$1]=1;b[$2]} END{for(i in a) print i; for(j in b) print j;}' file
a
c
1
b
xxx
d




您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |
(同态)
风云使者



CU编号: 451045
注册:2006-8-7
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:54 

回复 #14 ywlscpl 的帖子

哦。原来还有这个问题。

thanks。



您对本贴的看法:
| | |
(同态)
风云使者



CU编号: 451045
注册:2006-8-7
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:56 



QUOTE:
awk -F ":" '{print $1;v=v?v"\n"$2:$2}END{print v}' file

这个方法确实先进。

学习了。



您对本贴的看法:
| | |
  帅哥 (一阵风)
精灵王



CU编号: 313385
注册:2005-9-14
最后登录: 2009-08-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 17:57 

回复 #14 ywlscpl 的帖子

那为什么 

CODE:
awk -F'[:]' '{a[$1]=$2};END{for(i in a) {print i};for(i in a) {print a[i]}}'  ulfile

这样就没问题呢?



您对本贴的看法:
| | |

大天使



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







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 18:01 

回复 #17 chenwenming 的帖子

数据的原因没有使乱序体现出来

CODE:
[root@Mylinux tmp]# cat file
a:b
c:d
jjj:xxx
[root@Mylinux tmp]# awk -F'[:]' '{a[$1]=$2};END{for(i in a) {print i};for(i in a) {print a[i]}}' file
jjj
a
c
xxx
b
d




您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |
  帅哥 (一阵风)
精灵王



CU编号: 313385
注册:2005-9-14
最后登录: 2009-08-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 18:11 

回复 #18 ywlscpl 的帖子

多谢 ywlscpl 指正。 

CODE:
awk -F'[:]' '{a[$1]=$2};{if($1 in a) print $1 ;if($1 in a)print a[$1]}' ulfile

这样就不会出现hash排序的问题了吧。



您对本贴的看法:
| | |

大天使



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







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-5 18:25 

回复 #19 chenwenming 的帖子

非得用数组的话可以用定序的变量做下标

CODE:
awk -F ":" '{print $1;a[NR]=$2}END{for (i=1;i<=NR;i++) print a[i]}' file




您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |

» » »


查看积分策略说明
  帅哥 (暗夜星空)
老法王
休息休息



CU编号: 306408
注册:2005-8-25
最后登录: 2009-08-06
帖子:
精华:0







来自:广州<-->杭州
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 11:09 

回复 #31 greendays 的帖子

v=v?v"\n"$2:$2

这个?你学下语法好了, ()?():() 这个是个三目运算符..
?号前为真取中间,假取:号后的.

第一次v没定义.在awk中默认为0,那么v=0
那二次时 v=0;计算,v?v"\n"$2:$2; v=0,则v f取值$2;
下一次 v=$2; 计算,v?v"\n"$2:$2; v=$2,则v t 取值$2(原来的$2)"\n"$2

[ 本帖最后由 liaosnet 于 2009-8-6 11:11 编辑 ]



您对本贴的看法:

__________________________________

有时候回答问题是信口开河......
因此不保证所有回复问题的答案的准确性.
如果正好是对的,那是碰到了死耗子..呵呵.
想着休息,不想做事!
| | |
  帅哥
风云使者




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







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 11:14 

回复 #32 liaosnet 的帖子

f  和 t 是什么?  另外,为什么第一次非取:号后面的值?



您对本贴的看法:
| | |
  帅哥
风云使者




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







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 11:16 

回复 #32 liaosnet 的帖子

v赋值的优先级是什么?



您对本贴的看法:
| | |

侠客




CU编号: 836395
注册:2009-6-10
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 11:20 

哪位大虾写个C格式的



您对本贴的看法:
| | |
  帅哥
风云使者




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







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 11:24 

回复 #35 javajavaclone 的帖子

能讲一下吗?谢谢



您对本贴的看法:
| | |
  帅哥 (暗夜星空)
老法王
休息休息



CU编号: 306408
注册:2005-8-25
最后登录: 2009-08-06
帖子:
精华:0







来自:广州<-->杭州
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 12:20 



QUOTE:
原帖由 greendays 于 2009-8-6 11:14 发表
f  和 t 是什么?  另外,为什么第一次非取:号后面的值?

f=假,t=真...........(条件)?(值1):(值2) 这个是语法....第一次 条件为假,当然取第二个啰~



您对本贴的看法:

__________________________________

有时候回答问题是信口开河......
因此不保证所有回复问题的答案的准确性.
如果正好是对的,那是碰到了死耗子..呵呵.
想着休息,不想做事!
| | |
  帅哥
风云使者




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







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 12:48 

回复 #37 liaosnet 的帖子

终于明白了!! Thanks a million !



您对本贴的看法:
| | |

» » »

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