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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 求助: sed取匹配行前面的第3行,然后結(jié)束匹配 [復制鏈接]

論壇徽章:
2
技術圖書徽章
日期:2013-12-17 13:52:152015亞冠之薩濟拖拉機
日期:2015-07-19 11:07:52
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-07-12 11:48 |只看該作者 |倒序瀏覽
本帖最后由 rm-rf 于 2015-07-13 19:52 編輯

感謝各位大大的建議,離成功只有一步之遙了。

我今天在生產(chǎn)環(huán)境跑了一下,發(fā)現(xiàn)問題了,現(xiàn)在把帖子編輯一下。

有些文件并不是兩列的格式,也就說列數(shù)是不固定的,不過匹配標準仍然不變:

找到第1次匹配的以begin開頭的行,然后打印出匹配行前面的第3行的第2列,然后結(jié)束匹配,剩下的begin不再過濾。

$ cat 1.txt

a 1
v 56 999 4567
df8 2 kkk lll kkk
j5i 65 j
begin 456 ggh
75 df
ghi -5
74 op
begin dfg
cv
ffff

要求:采用最優(yōu)化方案,找到第1次匹配的以begin開頭的行,然后打印出匹配行前面的第3行的第2列,然后結(jié)束匹配,剩下的begin不再過濾。
注意每1行列數(shù)是不固定的,比如以上1.txt,第1次匹配begin的是begin 456 ggh,其前面第3行為v 56 999 4567,結(jié)果打印的是56

小弟先謝各位了。

論壇徽章:
54
2015亞冠之德黑蘭石油
日期:2015-07-07 13:00:1615-16賽季CBA聯(lián)賽之深圳
日期:2016-03-31 09:03:5415-16賽季CBA聯(lián)賽之遼寧
日期:2016-05-09 20:38:15程序設計版塊每日發(fā)帖之星
日期:2016-05-12 06:20:0015-16賽季CBA聯(lián)賽之四川
日期:2016-05-13 15:19:4715-16賽季CBA聯(lián)賽之福建
日期:2016-05-15 20:24:34每日論壇發(fā)貼之星
日期:2016-05-16 06:20:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-05-26 11:49:4715-16賽季CBA聯(lián)賽之廣東
日期:2016-05-26 13:49:18極客徽章
日期:2016-12-07 14:05:2315-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-20 17:33:532017金雞報曉
日期:2017-01-10 15:19:56
2 [報告]
發(fā)表于 2015-07-12 12:51 |只看該作者
回復 1# rm-rf
  1. $ awk '{a[NR]=$2}/^begin/{print a[NR-3];exit}' 1.txt
  2. 56
復制代碼

論壇徽章:
2
技術圖書徽章
日期:2013-12-17 13:52:152015亞冠之薩濟拖拉機
日期:2015-07-19 11:07:52
3 [報告]
發(fā)表于 2015-07-12 13:06 |只看該作者
回復 2# haooooaaa

非常感謝,如果必須用sed,能實現(xiàn)么?
   

論壇徽章:
54
2015亞冠之德黑蘭石油
日期:2015-07-07 13:00:1615-16賽季CBA聯(lián)賽之深圳
日期:2016-03-31 09:03:5415-16賽季CBA聯(lián)賽之遼寧
日期:2016-05-09 20:38:15程序設計版塊每日發(fā)帖之星
日期:2016-05-12 06:20:0015-16賽季CBA聯(lián)賽之四川
日期:2016-05-13 15:19:4715-16賽季CBA聯(lián)賽之福建
日期:2016-05-15 20:24:34每日論壇發(fā)貼之星
日期:2016-05-16 06:20:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-05-26 11:49:4715-16賽季CBA聯(lián)賽之廣東
日期:2016-05-26 13:49:18極客徽章
日期:2016-12-07 14:05:2315-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-20 17:33:532017金雞報曉
日期:2017-01-10 15:19:56
4 [報告]
發(fā)表于 2015-07-12 14:07 |只看該作者
回復 3# rm-rf


    sed 應該也可以, 只是沒這么方便, 個人感覺, sed我不太熟悉.

論壇徽章:
2
技術圖書徽章
日期:2013-12-17 13:52:152015亞冠之薩濟拖拉機
日期:2015-07-19 11:07:52
5 [報告]
發(fā)表于 2015-07-12 14:40 來自手機 |只看該作者
主要是因為文件超大,并且有大量文件需要查找,用awk數(shù)組我擔心性能問題,我再研究下,謝謝。

論壇徽章:
54
2015亞冠之德黑蘭石油
日期:2015-07-07 13:00:1615-16賽季CBA聯(lián)賽之深圳
日期:2016-03-31 09:03:5415-16賽季CBA聯(lián)賽之遼寧
日期:2016-05-09 20:38:15程序設計版塊每日發(fā)帖之星
日期:2016-05-12 06:20:0015-16賽季CBA聯(lián)賽之四川
日期:2016-05-13 15:19:4715-16賽季CBA聯(lián)賽之福建
日期:2016-05-15 20:24:34每日論壇發(fā)貼之星
日期:2016-05-16 06:20:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-05-26 11:49:4715-16賽季CBA聯(lián)賽之廣東
日期:2016-05-26 13:49:18極客徽章
日期:2016-12-07 14:05:2315-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-20 17:33:532017金雞報曉
日期:2017-01-10 15:19:56
6 [報告]
發(fā)表于 2015-07-12 14:55 |只看該作者
本帖最后由 haooooaaa 于 2015-07-12 15:03 編輯

回復 5# rm-rf


    來個性能夠的.
  1. $ awk '/^begin/{print a;exit}NR%3==1{a=b;b=c;c=$2}NR%3==2{a=b;b=c;c=$2}NR%3==0{a=b;b=c;c=$2}'  1.txt
  2. 56
復制代碼
用8樓 大神的, 我這個太...

論壇徽章:
22
處女座
日期:2014-10-11 13:33:292015亞冠之塔什干火車頭
日期:2015-07-20 19:59:042015亞冠之塔什干火車頭
日期:2015-07-26 10:59:31程序設計版塊每日發(fā)帖之星
日期:2015-08-05 06:20:00每日論壇發(fā)貼之星
日期:2015-08-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-08-07 06:20:00每日論壇發(fā)貼之星
日期:2015-08-07 06:20:002015亞冠之阿爾納斯爾
日期:2015-10-01 15:23:28白銀圣斗士
日期:2015-12-07 17:17:06操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-12-27 06:20:002015亞冠之廣州富力
日期:2015-07-08 15:48:31程序設計版塊每日發(fā)帖之星
日期:2015-06-11 22:20:00
7 [報告]
發(fā)表于 2015-07-12 14:56 |只看該作者
tac file|awk '/begin/{a=NR}NR==a+3{b=$2}END{print b}'
56

論壇徽章:
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
8 [報告]
發(fā)表于 2015-07-12 14:56 |只看該作者
回復 5# rm-rf

keep the last 3 lines data only

$ awk -vN=3 '/begin/{print a[N];exit}{for(n=N;n>1;n--)a[n]=a[n-1];a[1]=$2}' 1.txt
56

   

論壇徽章:
50
15-16賽季CBA聯(lián)賽之廣夏
日期:2018-11-05 09:42:462015年亞冠紀念徽章
日期:2015-07-23 11:58:122015亞冠之廣州富力
日期:2015-07-07 08:26:172015亞冠之塔什干棉農(nóng)
日期:2015-06-29 09:08:072015年亞洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47處女座
日期:2014-10-16 15:33:33酉雞
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亞冠之德黑蘭石油
日期:2015-07-29 12:46:372015亞冠之德黑蘭石油
日期:2015-08-07 12:54:11
9 [報告]
發(fā)表于 2015-07-12 15:26 |只看該作者
本帖最后由 WilliBhamlll 于 2015-07-12 15:31 編輯
  1. $ sed -nr '/begin/{x;s/.* (.*)(.*\n){2}.*/\1/p;Q};H' file
復制代碼

論壇徽章:
22
處女座
日期:2014-10-11 13:33:292015亞冠之塔什干火車頭
日期:2015-07-20 19:59:042015亞冠之塔什干火車頭
日期:2015-07-26 10:59:31程序設計版塊每日發(fā)帖之星
日期:2015-08-05 06:20:00每日論壇發(fā)貼之星
日期:2015-08-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-08-07 06:20:00每日論壇發(fā)貼之星
日期:2015-08-07 06:20:002015亞冠之阿爾納斯爾
日期:2015-10-01 15:23:28白銀圣斗士
日期:2015-12-07 17:17:06操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-12-27 06:20:002015亞冠之廣州富力
日期:2015-07-08 15:48:31程序設計版塊每日發(fā)帖之星
日期:2015-06-11 22:20:00
10 [報告]
發(fā)表于 2015-07-12 15:42 |只看該作者
回復 9# WilliBhamlll
大神你好,我也想過類似的方法,沒有匹配begin時追加到保持空間,
當?shù)谝淮纹ヅ鋌egin時,保持空間的內(nèi)容交換到模式空間,交換后模式空間的內(nèi)容應該為如下
a 1
v 56
df8 2
j5i 65

s/.* (.*)(.*\n){2}.*/    為啥能取到56,沒看懂。


   
您需要登錄后才可以回帖 登錄 | 注冊

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

  

北京盛拓優(yōu)訊信息技術有限公司. 版權(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
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP