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

  免費注冊 查看新帖 |

Chinaunix

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

求助一條awk正則表達式的實現(xiàn),謝謝 [復制鏈接]

論壇徽章:
1
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-02-02 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-03-26 15:38 |只看該作者 |倒序瀏覽
如下,文本中存在如下信息,目前只需要把每條userid后兩行的信息如online打印出來,請教怎么寫awk?
userid
123
online
………………
usernumber
567
………………
userid
456
online

對于這個需求,昨天發(fā)貼求助,好幾位高手給出了命令,測試了一下如下這個是最ok的,但我看了很久沒有搞明白這個正則表達式怎么實現(xiàn)我的需求的,短信給提供這個語句的高人還沒答復,所以另開一貼盼解答,先謝謝各位高手了.
awk  '/userid/{p=1;n=NR}p && NR-n == 2'  urfile

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
2 [報告]
發(fā)表于 2013-03-26 17:27 |只看該作者
回復 1# youcaihuazi


    和正則關系不大,和p關系比較大~

awk  '/userid/{p=1;n=NR}{print $0, p, "&&", NR-n == 2}'  urfile

論壇徽章:
1
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-02-02 06:20:00
3 [報告]
發(fā)表于 2013-03-27 08:32 |只看該作者
yinyuemi 你好,按照你解析后的命令測試了一下,輸出不正確,不明白這里定義這個變量p具體怎么用的.

論壇徽章:
1
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-02-02 06:20:00
4 [報告]
發(fā)表于 2013-03-27 08:37 |只看該作者
awk  '/userid/{p=1;n=NR}{if(p&&NR-n == 2) print $0}' urfile

剛才測試了一下,如果修改為如上就可以了,謝謝yinyuemi 幫助.后邊{if(p&&NR-n == 2) print $0}'這部分條件清楚了,但還有個問題,前邊/userid/{p=1;n=NR}這部分正則表達式怎么用完整的邏輯表達式表現(xiàn)出來呢?

論壇徽章:
0
5 [報告]
發(fā)表于 2013-03-27 09:15 |只看該作者
本帖最后由 Perlvim 于 2013-03-27 09:15 編輯

這個不是正則的威力,是 awk 其他命令的特性。這種代碼一般人看不懂:

提供一個 Perl 解決方案:


#!perl

use 5.014;

# 獲取數(shù)據(jù),保存為數(shù)組
my @lines = <DATA>;
# 臨時記憶變量,來記住 userid 后過了幾行
# 初始化值永遠都不可能匹配成功
my $past_lines = 3;
foreach my $line (@lines) {
  # 去掉每行數(shù)據(jù)后的回車
  chomp $line;
  # 如果匹配到 userid 就將計數(shù)器置零
  # 否則,就遞增
  $line =~ /userid/ ? $past_lines = 0 : $past_lines++;
  # 過了兩行后,就是需要的數(shù)據(jù)
  say $line if $past_lines == 2;
}

__DATA__
userid
123
online
………………
usernumber
567
………………
userid
456
online

論壇徽章:
0
6 [報告]
發(fā)表于 2013-03-27 15:50 |只看該作者
p是什么用法呢?同疑問,感覺不用這個p也可以阿

{
        if( $0 ~ /userid/){
                n=NR;
        }
        if( NR-2 == n){
                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