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

  免費注冊 查看新帖 |

Chinaunix

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

perl if 匹配中如何屏蔽掉特殊字符$,@, +等的解析。 [復制鏈接]

論壇徽章:
2
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-28 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-29 06:20:00
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-12-29 00:22 |只看該作者 |倒序瀏覽
場景:假如/tmp下面有3個子目錄為$b, g++, g@:F。
文件~/a內容如下其下面的子文件大小):
  1. 20  /tmp/$b/b1
  2. 20  /tmp/$b/b2
  3. 20  /tmp/$b/b3

  4. 10  /tmp/g++/g1
  5. 10  /tmp/g++/g2
  6. 10  /tmp/g++/g3

  7. 40  /tmp/g@:F/g1
  8. 40  /tmp/g@:F/g2
  9. 40  /tmp/g@:F/g3
復制代碼
現(xiàn)在想把~/a 中包括 /tmp/$b, /tmp/g++, /tmp/g@:F 行的第1列都相加(思路是: 用perl命令行,抓取~/a中包括 關鍵字的行,然后將其第1列相加):
  1. my @dir=`ls /tmp`;
  2. foreach my $one_dir (@dir) {
  3.         chomp $one_dir;
  4.         my $size = `perl -ne 'our \$t;
  5.         \$t+=\$1 if m{^\\s*(\\d+)\\s+$one_dir};
  6.         END {print "\$t\\n"}' $ENV{HOME}/a`;  
  7.         print "$size\n";
  8. }
復制代碼
但是會報錯,原因是 上面的if m{ $one_dir } 中包含了特殊字符$, @, +。
在 if 匹配里面:既能夠 將 $one_dir變量解析為字符串,但是又能夠屏蔽掉字符串里面的特殊字符呢?

附:上面只是一個例子,實際中還可能存在很多其它的特殊字符。

麻煩大家?guī)兔聪隆?br /> 深夜發(fā)帖求助,不容易哈。
多謝

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
2 [報告]
發(fā)表于 2015-12-29 09:32 |只看該作者
"\Qa+b-c*d\E"  \Q \E 之間所有的非字符都會加 \ ,變成 "a\+b\-c\*d" 也可以用對應的函數(shù) quotemeta

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
3 [報告]
發(fā)表于 2015-12-29 09:33 |只看該作者
啊,那個叫非數(shù)字字母

論壇徽章:
2
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-28 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-29 06:20:00
4 [報告]
發(fā)表于 2015-12-29 21:27 |只看該作者
回復 2# zhlong8

您好,我按照您的方法試了,還是不行。
不論是 "\\Q$one_dir\\E" 或者是 \\Q$one_dir\\E,
都不行。

size結果為空。
麻煩繼續(xù)幫忙看下

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
5 [報告]
發(fā)表于 2015-12-30 00:24 |只看該作者
回復 4# weichanghe2000


    看清楚啊,\\Q \\E 是什么東西,我就加了一個反斜杠。這是個語法,編譯后相當于字符串連接     '前面的' . quotemeta('QE之間的內容') . '后面的內容'

論壇徽章:
2
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-28 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-29 06:20:00
6 [報告]
發(fā)表于 2015-12-30 01:05 |只看該作者
本帖最后由 weichanghe2000 于 2015-12-30 01:13 編輯

回復 5# zhlong8

版主,您好,用1個\Q \E 也是一樣的哈,$size還是為空。
您可不可以在您那邊也創(chuàng)建一個文件a 和幾個那樣的目錄 試下哈?

文件a如下:
  1. 20  /tmp/$b/b1
  2. 20  /tmp/$b/b2
  3. 20  /tmp/$b/b3

  4. 10  /tmp/g++/g1
  5. 10  /tmp/g++/g2
  6. 10  /tmp/g++/g3

  7. 40  /tmp/g@:F/g1
  8. 40  /tmp/g@:F/g2
  9. 40  /tmp/g@:F/g3
復制代碼
腳本如下:
  1. my @dir=`ls /tmp/spe`;
  2. foreach my $one_dir (@dir) {
  3.         chomp $one_dir;
  4.         print "one_dir: $one_dir\n";
  5.         my $size = `perl -ne 'our \$t;
  6.         \$t+=\$1 if m{^\\s*(\\d+)\\s+"\Q$one_dir\E"};
  7.         END {print "\$t\\n"}' $ENV{HOME}/a`;  
  8.         print "size: $size\n";
  9. }
復制代碼

論壇徽章:
2
數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-28 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-10-29 06:20:00
7 [報告]
發(fā)表于 2015-12-30 10:29 |只看該作者
本帖最后由 weichanghe2000 于 2015-12-30 10:33 編輯

回復 6# weichanghe2000


找到原因了,
1.  $one_dir前面還要加一個絕對路徑,
2.  \Q 和 \E 不能用 ""  括起
3.  \Q 和 \E 只用1個\
4.  \d+, \s* 用2個\

多謝版主大神哈。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(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的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP