亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
文件內(nèi)容多字符串搜索
[打印本頁]
作者:
夏洛特貓
時間:
2016-06-01 11:09
標(biāo)題:
文件內(nèi)容多字符串搜索
本帖最后由 夏洛特貓 于 2016-06-01 11:36 編輯
在文件處理的時候,一直在用grep做過濾來過濾關(guān)鍵詞,
需要對文件查看是否含有多個關(guān)鍵詞的時候發(fā)現(xiàn)grep不是特別好用,grep對每行的內(nèi)容進(jìn)行搜索還可以,但是不知道哪種更適合如下的要求,先謝謝大家的幫助
題目如下:
需要精確的檢測L文件內(nèi)容,如果文件中
同時含有
"hello","name","old","floatdir"這四個詞則輸出正確,如果
缺省其中的任何一個
都需要輸出錯誤。
文件L的內(nèi)容如下:
L1:
hello
name
old
floatdir
L2:
hello
name
old
我的思路是通過循環(huán)對文件一次查找,如果不為空則說明所有單詞都在文件中,但是不知道又沒用更簡單的 甚至是用一條命令就可以完成滿足上述條件的操作,先謝謝各位前輩了。
作者:
moperyblue
時間:
2016-06-01 11:32
本帖最后由 moperyblue 于 2016-06-01 11:44 編輯
more L
aa
hello
name
old,floatdir
bb
grep -oP 'hello|name|old|floatdir' L|wc -l
4
more L
aa
iello
name
old,floatdir
bb
grep -oP 'hello|name|old|floatdir' L|wc -l
3
復(fù)制代碼
作者:
wjemail
時間:
2016-06-01 11:40
grep "hello" filename && grep "name" filename && grep "old" filename && grep "floatdir" finename && echo "OK"
作者:
Herowinter
時間:
2016-06-01 11:45
回復(fù)
1#
夏洛特貓
a=("hello" "name" "old" "floatdir");for((i=0;i<${#a[@]};i++));do if ! grep -wq ${a[i]} i;then echo "incorrect";break;elif(($i==${#a[@]}-1));then echo "correct";fi;done
correct
復(fù)制代碼
作者:
sunzhiguolu
時間:
2016-06-01 12:15
本帖最后由 sunzhiguolu 于 2016-06-01 12:17 編輯
perl -00 -nle 'BEGIN{%H=("hello"=>1,"name"=>1,"old"=>1,"floatdir"=>1)}{print "FAIL:\n$_" if((grep {$H{$_}} grep {!/\AL/} split)%4)}' f
復(fù)制代碼
FAIL:
L2:
hello
name
old
作者:
jason680
時間:
2016-06-01 12:33
回復(fù)
1#
夏洛特貓
$ awk -vRS='' 'BEGIN{t=split("
hello name old floatdir
",a)}{c=0;for(n in a)if($0~a[n])++c;print (c==t)?$1"OK":$1"Err"}' L
L1:OK
L2:Err
作者:
haooooaaa
時間:
2016-06-01 12:38
awk -vRS='hello|name|old|floatdir' 'RT{a[RT]}END{print length(a)==4?"OK":"ERROR"}'
復(fù)制代碼
作者:
夏洛特貓
時間:
2016-06-01 13:57
感謝感謝 perl的都出來了多謝指點
回復(fù)
5#
sunzhiguolu
作者:
夏洛特貓
時間:
2016-06-01 13:59
謝謝您的回復(fù),只是寫判斷不太符合要求,不過看了下您的思路也挺好的,通過判斷行號的變化來確定是否有含有要求的字符 謝謝
回復(fù)
2#
moperyblue
作者:
夏洛特貓
時間:
2016-06-01 14:01
thanks~ 謝謝您的指點,回復(fù)
3#
wjemail
作者:
夏洛特貓
時間:
2016-06-01 14:04
多謝您的指導(dǎo)!!thanks~回復(fù)
4#
Herowinter
作者:
夏洛特貓
時間:
2016-06-01 14:11
多謝jason哥
回復(fù)
6#
jason680
作者:
夏洛特貓
時間:
2016-06-01 14:13
試了下您給的命令,不知道為什么會出現(xiàn)“
awk: line 1: illegal reference to array a
” 仍然感謝您的指點
回復(fù)
7#
haooooaaa
作者:
sunzhiguolu
時間:
2016-06-01 14:17
perl -00 -ple '@a=/\A\S+|hello|name|old|floatdir/g;@a==5?($_="$a[0]\tGood"):($_="$a[0]\tNo Good")' f
復(fù)制代碼
L1: Good
L2: No Good
作者:
夏洛特貓
時間:
2016-06-01 14:21
回復(fù)
14#
sunzhiguolu
作者:
mswsg
時間:
2016-06-02 08:41
如果按照你的示例文件來說,這個判斷不難。不知道你的文件大不大?
作者:
jcdiy0601
時間:
2016-06-02 09:08
awk 'BEGIN{RS=""}{if($0~/floatdir/ && $0~/name/ && $0~/hello/ && $0~/old/)print $1"True";else print $1"False"}' file
L1:True
L2:False
作者:
夏洛特貓
時間:
2016-06-02 09:13
并不大,判斷的話也會寫,只是現(xiàn)在想嘗試用一條命令實現(xiàn),多謝您的回復(fù)
回復(fù)
16#
mswsg
作者:
夏洛特貓
時間:
2016-06-02 09:14
thanks alot ~~回復(fù)
17#
jcdiy0601
作者:
ll104567
時間:
2016-06-06 15:23
本帖最后由 ll104567 于 2016-06-06 16:57 編輯
grep -Eo 'hello|name|old|floatdir'|sort|uniq|wc -l
然后看一下是不是4個
改進(jìn)了一下
grep -oE '\bhello\b|\bname\b|\bold\b|\bfloatdir\b'|sort|uniq |wc -l
復(fù)制代碼
作者:
夏洛特貓
時間:
2016-06-06 16:59
謝謝~
回復(fù)
20#
ll104567
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2