看板 Linux 關於我們 聯絡資訊
在LINUX中,用egrep "123|abc"可以找出檔案內有“123”或“abc"的檔案, 但若我想要找出一個目錄下,檔案內容同時有“123”和“abc"(不一定會在同一行)的 話, 有沒有什麼好的處理方式呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.248.55 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1490697354.A.F1F.html
hijkxyzuw: grep -q 'abc' $filename && grep -q '123' $filename03/28 18:52
這個我怎麼試都不行。
kenduest: grep -Rl --null "123" /path/ 2>/dev/null | \03/28 19:21
kenduest: xargs -0 grep -l "root"03/28 19:22
rickieyang: egrep -oH '123|ab' *|sed -e 's/:.*//'|sort|uniq -d03/29 08:54
rickieyang: 更正...03/29 08:55
rickieyang: egrep -oH '123|abc' *|sort|uniq|sed -e 's/:.*//'|\03/29 08:56
rickieyang: uniq -d03/29 08:56
若條件式只有1個或超過2個時,這樣的寫法一樣會找不出來。 ※ 編輯: eric680826 (223.137.143.215), 03/29/2017 12:20:15
rickieyang: 只有一個就直接 grep 呀,超過兩個不能用 uniq -d 03/29 13:33
hijkxyzuw: 是 if grep 'abc' $filename && grep '123' $filename 03/29 13:54
hijkxyzuw: then echo $filename 03/29 13:54
hijkxyzuw: fi 03/29 13:54
nknudragon: egrep "123\|abc" 03/29 15:37
nknudragon: pcregrep -M '123.*(\n|.)*abc' file.log 03/29 15:45
nknudragon: grep -e "123.*(\n|.)*abc" file.log <-- 這沒試過 03/29 16:01
nknudragon: pcregrep -M '123.*\n.*abc' file.log 03/29 16:25
nknudragon: grep -Pzo "(?s)^(\s*)\N*main.*?{.*?^\1}" *.c 03/29 16:28
nknudragon: https://goo.gl/p3QCrt https://goo.gl/SPc89y 03/29 18:38
nknudragon: 上面的方法好像都只能找到 先出現123 , 再出現abc 03/29 18:45
nknudragon: https://goo.gl/hMD68d 這篇有說怎麼做 (但我看不懂) 03/29 18:55
Bellkna: grep -P '^(abc.*123|123.*abc)' 03/29 19:54
Bellkna: 這個應該可以去regexp板問看看 03/29 19:55
Vdragon: devide & conquer 如何?先找出有 A 式樣的檔案再從中找 03/30 13:10
Vdragon: 有 B 式樣的檔案 03/30 13:10
Vdragon: *divide 03/30 13:10
losepacific: grep -Pzl '(?s)(?=.23)(?=.1)(?=.*ab)' * 03/31 05:23
losepacific: 更正 grep -Pzl '(?s)(?=.*23)(?=.*1)(?=.*ab)' * 03/31 05:24
losepacific: 但以目前的例子應該寫成: 03/31 05:26
losepacific: grep -Pzl '(?s)(?=.*abc)(?=.*123)' * 03/31 05:27
losepacific: https://goo.gl/44I4id 03/31 05:29
losepacific: https://goo.gl/jLROAZ 03/31 05:31
losepacific: https://goo.gl/AdFsbj 03/31 05:32