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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

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

[文本處理] sed提取文本的問(wèn)題,折騰了兩個(gè)小時(shí)沒(méi)搞定 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-12-26 13:25 |只看該作者 |倒序?yàn)g覽
有一個(gè)日志文件,內(nèi)容如下:

#A#00#FileName1 Start#
#A#01##
#A#02##
#B#00#FileName2 Start#
#B#01##
#B#02##
#A#03##
#A#04##
#C#00#FileName3 Start#
#B#03##
#C#01##
#C#02##
#C#03##
#A#00#FileName4 Start#
#C#04##

現(xiàn)在我想根據(jù)第二個(gè)字段提取內(nèi)容,對(duì)于FileName1,我提取的內(nèi)容是:
#A#00#FileName1 Start#
#A#01##
#A#02##
#A#03##
#A#04##

步驟是先找到FileName1,再找到FileName1所在行的第一個(gè)字段A,
再往下查找第一個(gè)字段都是A的記錄,直到遇到Start再次出現(xiàn),輸出之前匹配的行。

問(wèn)題是:
這個(gè)文件很大,需要考慮效率;
00,01,02等這些是處理步驟,個(gè)數(shù)不限,判斷匹配結(jié)束只能是Start再次出現(xiàn),并且不要輸出后面這個(gè)Start行;

我通過(guò)AWK已經(jīng)單條命令實(shí)現(xiàn)了目的,通過(guò)SED腳本也實(shí)現(xiàn)了;
現(xiàn)在想請(qǐng)大家?guī)椭绻ㄟ^(guò)SED單條命令實(shí)現(xiàn),我嘗試了多次未成功,最好是hp-ux ksh環(huán)境,謝謝~~

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
2 [報(bào)告]
發(fā)表于 2012-12-26 13:32 |只看該作者
alias sed=awk

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
3 [報(bào)告]
發(fā)表于 2012-12-26 14:05 |只看該作者
把你自己寫的代碼貼出來(lái)看看

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-12-26 14:57 |只看該作者
  1. awk '/FileName1/{print;getline k;x=substr(k,2,1);print k;while(getline){if(substr($0,2,1)==x&&NF==1)print $0}}'
復(fù)制代碼
猜是不是這樣的?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-12-26 15:12 |只看該作者
回復(fù) 3# Shell_HAT

  1. [cceu@vm-zk02:/home/cceu/]cat log.txt
  2. #A#00#FileName1 Start#
  3. #A#01##
  4. #A#02##
  5. #B#00#FileName2 Start#
  6. #B#01##
  7. #B#02##
  8. #A#03##
  9. #A#04##
  10. #C#00#FileName3 Start#
  11. #B#03##
  12. #C#01##
  13. #C#02##
  14. #C#03##
  15. #A#00#FileName4 Start#
  16. [cceu@vm-zk02:/home/cceu/]awk -F# '{if($4~/FileName1/){inst=$2;print;continue} if($2!="" && $2==inst){if($4~/Start/) exit; print}}' log.txt         
  17. #A#00#FileName1 Start#
  18. #A#01##
  19. #A#02##
  20. #A#03##
  21. #A#04##
  22. [cceu@vm-zk02:/home/cceu/]awk -F# '{if($4~/FileName2/){inst=$2;print;continue} if($2!="" && $2==inst){if($4~/Start/) exit; print}}' log.txt
  23. #B#00#FileName2 Start#
  24. #B#01##
  25. #B#02##
  26. #B#03##
  27. [cceu@vm-zk02:/home/cceu/]awk -F# '{if($4~/FileName3/){inst=$2;print;continue} if($2!="" && $2==inst){if($4~/Start/) exit; print}}' log.txt
  28. #C#00#FileName3 Start#
  29. #C#01##
  30. #C#02##
  31. #C#03##
  32. #C#04##
  33. [cceu@vm-zk02:/home/cceu/]

  34. [cceu@vm-zk02:/home/cceu/]cat my_catch_sed.sh
  35. #!/usr/bin/ksh

  36. match=`grep -n $1 $2`
  37. start=`echo $match | awk -F: '{print $1}'`
  38. inst=`echo $match | awk -F# '{print $2}'`
  39. sed "${start},/${inst}/{:a;x;N;s/Start/&/;ba;x;q;}" $2 | grep "${inst}"
  40. [cceu@vm-zk02:/home/cceu/]./my_catch_sed.sh FileName1 log.txt
  41. sed: 標(biāo)號(hào) 1,/A/{:a;x;N;s/Start/&/;ba;x;q;} 超過(guò) 8 個(gè)字符。
  42. [cceu@vm-zk02:/home/cceu/]
復(fù)制代碼
上面嘗試用sed標(biāo)號(hào),也不熟悉,不知道為什么總是報(bào)這個(gè)錯(cuò),請(qǐng)指教,多謝~~

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
6 [報(bào)告]
發(fā)表于 2012-12-26 16:35 |只看該作者

  1. sed -n '/^\(#[^#]*\)#[^#]*#FileName1[^#]*#.*/{p;s//\1/;x;b}
  2. G
  3. /^\(#[^#]*\)#[^#]*#[^#]*Start#.*\n\1/b
  4. /^\(#[^#]*\)#.*\n\1/P'  urfile
復(fù)制代碼

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2012-12-26 17:11 |只看該作者
回復(fù) 6# waker


    謝謝大蝦指教啊,我已遠(yuǎn)眺到你思路的尾巴了,可能hpux的sed太挫了,執(zhí)行報(bào)錯(cuò),不管了,非常感謝!

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
8 [報(bào)告]
發(fā)表于 2012-12-26 17:14 |只看該作者
回復(fù) 7# insnowind


    山寨你awk的思路而已
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP