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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 怎么不獲。ɑ蛱^)重復的字符串 [復制鏈接]

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-03-07 09:14 |只看該作者 |倒序瀏覽
各位大神,求助。!
一個文件file:
d,g,j,l,l
s,f,h,k,l
z,r,y,j,k
d,v,n,k,r
a,f,j,r,o
s,f,y,i,e

我要通過讀行,獲取第二列的關鍵字,然后通過這個關鍵字去處理文件,while read line

現(xiàn)在我要的是如果第二列,關鍵字假如有多個重復的,我只要第一次出現(xiàn)的,如果出現(xiàn)了下一次則不獲。ɑ蛱^)這個關鍵字




論壇徽章:
12
IT運維版塊每日發(fā)帖之星
日期:2015-11-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-01-19 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-01-17 15:31:3915-16賽季CBA聯(lián)賽之上海
日期:2016-01-16 15:44:3015-16賽季CBA聯(lián)賽之浙江
日期:2016-01-15 20:38:1815-16賽季CBA聯(lián)賽之北京
日期:2016-01-09 14:30:15CU十四周年紀念徽章
日期:2016-01-07 12:31:5115-16賽季CBA聯(lián)賽之四川
日期:2016-01-01 11:49:1515-16賽季CBA聯(lián)賽之深圳
日期:2015-12-24 14:23:4115-16賽季CBA聯(lián)賽之山西
日期:2015-12-15 16:22:31技術圖書徽章
日期:2015-12-10 17:41:0015-16賽季CBA聯(lián)賽之北控
日期:2016-02-03 10:03:24
2 [報告]
發(fā)表于 2016-03-07 09:34 |只看該作者
假如你處理關鍵字的命令是ls -l
awk -F, '!a[$2]++{CMD="ls -l "$2;system(CMD)}' file

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
3 [報告]
發(fā)表于 2016-03-07 10:37 |只看該作者
回復 2# sync_1521


    謝謝大神,
但是 ,額。。新手
我是對文件經行處理,獲取每行有f關鍵字的第4個域
通過grep “關鍵字f” 查找到那一行,假如那一行是 s,f,h,k,l
然后對那行進行處理cut 獲取關鍵字 k
然后獲取k在文件中的所有相關的信息

我上面的file可能不全,我再整理下哈~

d,g,j,l,l
s,f,h,k,l
z,r,y,j,k
d,v,n,k,r
s,f,h,k,j 這一行為f和k都在上一行的同一個位置,因為在在上一行中已經獲取了k這個關鍵字,所以這個k就不獲。ɑ蛱^)
a,f,j,r,o
s,f,y,i,e

這樣子,謝謝~

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
4 [報告]
發(fā)表于 2016-03-07 11:39 |只看該作者
回復 3# _lpq

目測一下:
  1. awk -F, '!a[$2]++{print $4}'  urfile
復制代碼

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
5 [報告]
發(fā)表于 2016-03-07 15:33 |只看該作者
回復 4# 關陰月飛


    試過了,可以把第四列打印出來,但是我要的結果是不打印第四列重復的
第四列有三個k
我只要第一個就可以了


d,g,j,l,l
s,f,o,k,l
z,r,y,j,k
d,v,n,k,r
q,f,h,k,j 這一行為f和k都在上一行的同一個位置,因為在在上一行中已經獲取了k這個關鍵字,所以這個k就不獲取(或跳過)
a,f,j,r,o
s,f,y,i,e


我需要的結果是
k
r
i

謝謝啦~~

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
6 [報告]
發(fā)表于 2016-03-07 16:46 |只看該作者
回復 5# _lpq


    看著不清~~~
重新寫一遍

    試過了,可以把第四列打印出來,但是我要的結果是不打印第四列重復的
第四列有三個k
我只要第一個就可以了


d,g,j,l,l
s,f,o,k,l
z,r,y,j,k
d,v,n,k,r
q,f,h,k,j 這一行為f和k都在上一行的同一個位置,因為在在上一行中已經獲取了k這個關鍵字,所以這個k就不獲。ɑ蛱^)
a,f,j,r,o
s,f,y,i,e


我需要的結果是
k
r
i

謝謝啦~~

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [報告]
發(fā)表于 2016-03-07 16:49 |只看該作者
回復 5# _lpq

$ awk -F, '$2=="f"{if(!a[$4]++)print$4}' file
k
r
i

   

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
8 [報告]
發(fā)表于 2016-03-07 17:22 |只看該作者
回復 7# jason680


   
    謝謝iason

1.  因為我要處理的文件比較大

然后是
grep "f" | cut -d" " -f4  與  awk -F, '$2=="f"{if(!a[$4]++)print$4}' file
就是同樣的結果    這兩者相比較哪個速度更快,


2.
awk '$0 ~/(Yellow|Brown)/' grade.txt

為抽取級別為y e l l o w或b r o w n的記錄,使用豎線符|。意為匹配| 兩邊模式之一。

然后我想再加一個匹配Green
不知是否可以
awk '$0 ~/(Yellow|Brown|Green)/' grade.txt

3.

對于2的問題是否還有速度更快的解決辦法


終于可以與大神對話了,嘿嘿

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [報告]
發(fā)表于 2016-03-07 17:59 |只看該作者
1. ...哪個速度更快...
  不一定,但少用管道...
  grep "f" file | cut -d" " -f4  
  awk -F, '$2=="f"{if(!a[$4]++)print$4}' file
注:上面兩者(功能)作用不同...
有時結果相同,但有時結果不同...

2&3. ...不知是否可以 awk '$0 ~/(Yellow|Brown|Green)/' grade.txt
可以
  awk '/Yellow|Brown|Green/' grade.txt
  grep -E 'Yellow|Brown|Green' grade.txt

time 可以幫助你,了解何者較快/慢(要多測幾次)...
time awk ...
time grep ...

$ time awk  '/99999|11234|65432/' file
11234
65432
99999

--------------------
$ seq 100000 > file

$ time grep -E '99999|11234|65432' file
1. real    0m0.111s
2. real    0m0.099s
3. real    0m0.102s

$ time awk  '/99999|11234|65432/' file
1. real    0m0.146s
2. real    0m0.099s
3. real    0m0.126s

論壇徽章:
1
15-16賽季CBA聯(lián)賽之廣夏
日期:2016-04-12 15:53:16
10 [報告]
發(fā)表于 2016-03-07 21:51 |只看該作者
回復 9# jason680


    非常感謝~~~
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP