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

  免費注冊 查看新帖 |

Chinaunix

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

如何刪掉某一個域相同的重復(fù)的行 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-07-05 23:13 |只看該作者 |倒序瀏覽
有一個文本,形式如下:
aaa:bbb:cccc:dddd
bbb:111:dddd:yyyy
222:bbb:3333xxx
vvv:aaa:pppp:jjjjjj
ooo:bbbxxxx:vvvv
假如現(xiàn)在我想把只要是第二域相同的行,只顯示第一行,其余的行刪除,用shell怎么實現(xiàn),沒想到好的辦法,請高手賜教!多謝!

論壇徽章:
1
榮譽(yù)會員
日期:2011-11-23 16:44:17
2 [報告]
發(fā)表于 2007-07-05 23:45 |只看該作者
try:
awk -F: '!a[$2]++'

論壇徽章:
0
3 [報告]
發(fā)表于 2007-07-05 23:56 |只看該作者
烈火兄,我試驗了你的code ,沒問題,但 !a[$2]++是什么意思?偶系新手不太明白,請指教,另 我是這樣寫的awk -F ':' '{if($2=line) print $0;line=$2}' 但實驗結(jié)果不正確,請烈火兄賜教,不勝感謝!。

論壇徽章:
0
4 [報告]
發(fā)表于 2007-07-05 23:57 |只看該作者
上面我的code寫錯了應(yīng)當(dāng)是
awk '{if ($2!=line) print;line=$0}' file

論壇徽章:
23
15-16賽季CBA聯(lián)賽之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午馬
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16賽季CBA聯(lián)賽之山東
日期:2017-12-21 16:39:1915-16賽季CBA聯(lián)賽之廣東
日期:2016-01-19 13:33:372015亞冠之山東魯能
日期:2015-10-13 09:39:062015亞冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [報告]
發(fā)表于 2007-07-06 09:08 |只看該作者
原帖由 寂寞烈火 于 2007-7-5 23:45 發(fā)表
try:
awk -F: '!a[$2]++'


贊一個。
又學(xué)了一招。

論壇徽章:
0
6 [報告]
發(fā)表于 2007-10-27 11:06 |只看該作者
awk '{if ($2!=line) print;line=$0}' file
這種寫法理論上應(yīng)該是對的,但是前提是重復(fù)的行都是相鄰的情況下才行,像前面給的文件內(nèi)容,顯然是不對的
可以用另一種方法,即先排序然后再排重
sort -t: -k2 test2.txt|awk '{if ($2!=line) print;line=$0}' file
試過了,這種是可以的,關(guān)鍵是排序后源文件的順序就亂了,保留下來的行的順序可能跟你想要的不一樣,還是寂寞烈火  的寫法猛

論壇徽章:
0
7 [報告]
發(fā)表于 2007-10-27 15:50 |只看該作者
awk -F: '!a[$2]++' 很猛
但是一直沒看懂

論壇徽章:
0
8 [報告]
發(fā)表于 2007-10-27 16:27 |只看該作者
原帖由 shihk 于 2007-10-27 15:50 發(fā)表
awk -F: '!a[$2]++' 很猛
但是一直沒看懂


-F:  表示用:作分隔符

在awk中,表達(dá)式由  條件{} 組成,其中,{...}是操作,如果省略的話,就表示 print $0 就是打印讀取到的行
a[$2]++ 表示用第二個字段做數(shù)組的下標(biāo)(awk中,數(shù)組都是關(guān)聯(lián)數(shù)組,即 key=>value),同時將這個數(shù)組項+1
!a[$2]++ 是先對數(shù)組項a[$2]進(jìn)行非邏輯判斷,如果a[$2]為空、不存在、0的話,邏輯表達(dá)式的結(jié)果為true,判斷完成后,對a[$2]進(jìn)行+1運(yùn)算
因為這個表達(dá)式中沒有{},因此,用缺省的print $0來操作

因此,!a[$2]++就表示,如果第二個字段的字符串第一次出現(xiàn)的話,就打印本行的內(nèi)容,否則略過不操作


不知道這樣解釋你是否滿意
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP