亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3464 | 回復: 13
打印 上一主題 下一主題

請教:一個文件中根據(jù)一個字段值查詢和他相同字段的內(nèi)容 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-05-17 12:03 |只看該作者 |倒序瀏覽
文件的格式是這樣的:

aaa    aaaaaa
bbb    bbbbbb
ccc     cccccccc
aaa   aaaaaaaaaaaa
ddd   ddddddd
bbb   bbbbbbbbbbbb
ccc    cccccccccccccccc
ddd   dddddddddddd

如何根據(jù)第一個字段的值找到對應行的內(nèi)容,變成下面這個樣子:

aaa    aaaaaa
aaa   aaaaaaaaaaaa
---------------------------------
bbb    bbbbbb
bbb   bbbbbbbbbbbb
---------------------------------
ccc     cccccccc
ccc    cccccccccccccccc
---------------------------------
ddd   ddddddd
ddd   dddddddddddd


謝謝

論壇徽章:
0
2 [報告]
發(fā)表于 2009-05-17 12:10 |只看該作者
  1. awk '{a[$1]=a[$1]"\n"$2}END{for(i in a)print i,a[i]"\n--------"}' file
復制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2009-05-17 12:28 |只看該作者
原帖由 wucailiuxing 于 2009-5-17 12:03 發(fā)表
文件的格式是這樣的:

aaa    aaaaaa
bbb    bbbbbb
ccc     cccccccc
aaa   aaaaaaaaaaaa
ddd   ddddddd
bbb   bbbbbbbbbbbb
ccc    cccccccccccccccc
ddd   dddddddddddd

如何根據(jù)第一個字段的值 ...


這個,如果對第一個字段排序,得到的結果是不是滿足你的要求?

論壇徽章:
0
4 [報告]
發(fā)表于 2009-05-17 12:40 |只看該作者
如果需要排序:

  1. sort URFILE | awk '!a[$1]++&&NR!=1{print "-----------"}1'
復制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2009-05-17 13:04 |只看該作者
原帖由 kwokcn 于 2009-5-17 12:40 發(fā)表
如果需要排序:

sort URFILE | awk '!a[$1]++&&NR!=1{print "-----------"}1'

最后的1是啥?可否解釋一下

把1換成{print $1" "$2}之后,有點理解了……

[ 本帖最后由 tbocd 于 2009-5-17 13:31 編輯 ]

論壇徽章:
2
申猴
日期:2013-12-26 22:11:31天秤座
日期:2014-12-23 10:23:19
6 [報告]
發(fā)表于 2009-05-17 14:51 |只看該作者
我寫的,大家見笑了
  1. awk '{num[$1]++;arr[$1,num[$1]]=$0;}''END{for(i in num)for(j=1;j<=num[i];j++)print arr[i,j];}'
復制代碼

論壇徽章:
2
申猴
日期:2013-12-26 22:11:31天秤座
日期:2014-12-23 10:23:19
7 [報告]
發(fā)表于 2009-05-17 14:55 |只看該作者

回復 #2 ubuntuer 的帖子

佩服啊...

論壇徽章:
0
8 [報告]
發(fā)表于 2009-05-18 13:47 |只看該作者

問題解決

感謝大家?guī)兔Γ兄xkwokcn 。你寫的命令就是我想要的,謝謝。

goter寫的也能達到我要的效果,這個命令我也能看懂。

能否請kwokcn 解釋一下該命令的原理,不好意思,一直沒有看懂。

[ 本帖最后由 wucailiuxing 于 2009-5-18 13:51 編輯 ]

論壇徽章:
0
9 [報告]
發(fā)表于 2009-05-18 14:04 |只看該作者
sort不用解釋了吧

awk '!a[$1]++&&NR!=1{print "-----------"}1'
第一列內(nèi)容第一次出現(xiàn)的時候并且不為第一行時,打印------------
后面的1表示每行都打印行內(nèi)容

論壇徽章:
0
10 [報告]
發(fā)表于 2009-05-18 14:05 |只看該作者
sort后awk得到的輸入是:
aaa    aaaaaa
aaa   aaaaaaaaaaaa
bbb    bbbbbb
bbb   bbbbbbbbbbbb
ccc     cccccccc
ccc    cccccccccccccccc
ddd   ddddddd
ddd   dddddddddddd

!a[$1]++是把a[$1]的值交給!,然后自加。
如果$1第一次出現(xiàn),那么!a[$1]++的結果是:返回真,a[$1]自加成1;如果$1不是第一次出現(xiàn),那么a[$1]非0,!a[$1]返回假,a[$1]自加。
因此只有$1第一次出現(xiàn)時,表達式!a[$1]++返回真。

NR!=1是為了不在第一行前做處理。

在a[$1]++&&NR!=1返回真時,print分割行"--------"。

最后的1相當于{if(true) print $0},即打印每一行的意思。

處理每一行的時候會先進行前面的判斷,如果條件達成則輸出分隔行。然后輸出該行。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP