網(wǎng)站首頁 編程語言 正文
grep 是一個(gè)命令行文本搜索實(shí)用程序,能夠在文件和其他類型的輸入中查找模式和字符串。大多數(shù)匹配只匹配一行,但跨多行匹配通常很有用。
使用 grep 匹配多個(gè)新行
處理多行匹配是一件很困難的事情grep 。一個(gè)更好的工具是awk or sed,它們都可以自然地處理多行輸入。使用兩個(gè)帶有逗號(hào)的表達(dá)式將匹配這兩個(gè)模式之間的所有內(nèi)容。
awk '/from/,/to/' file
sed -n '/from/,/to/p' file
仍然可以在 中處理此問題grep,但是該命令非常笨拙。
grep -Pz '(?s)from.*n.*to' test
這做了幾件事:
- -P打開Perl 兼容的正則表達(dá)式。
- -z 將整個(gè)文件作為一行提供,使用“零字節(jié)”而不是換行符。這允許 grep 將整個(gè)事情作為一行處理。 (?s) 打開 PCRE_DOTALL,使. 字符匹配任何字符,包括換行符。
- from 是首發(fā)比賽。
- .n. 將匹配所有內(nèi)容,直到to,這是結(jié)束匹配。
總體而言,這將為腳本目的完成,但如果您自己輸入,請記住很多。此外,使用該-o 標(biāo)志僅打印匹配項(xiàng)也會(huì)打印出尾隨零字節(jié)字符,這可能會(huì)導(dǎo)致其他問題。
使用 pcre2grep 代替(Perl 兼容的 grep)
正grep 則不是完成這項(xiàng)工作的最佳工具,還有一種替代方法pcre2grep ,即開箱即用地支持 Perl 兼容正則表達(dá)式,并且能夠非常輕松地匹配多行正則表達(dá)式。
它可能已安裝在您的系統(tǒng)上,但如果沒有,您可以從包管理器中獲取它:
sudo apt install pcre2-utils
然后,您只需要使用-M 參數(shù)運(yùn)行它。
pcre2grep -M 'from(n|.)*to' file
請注意,這仍然需要您手動(dòng)將“換行符或任何字符”與(n|.)* . 或者,您可以使用該(?s) 技巧打開 PCRE_DOTALL 并使點(diǎn)字符也匹配換行符。
pcre2grep -M '(?s)from.*to' file
總結(jié)
原文鏈接:https://blog.csdn.net/wlcs_6305/article/details/126002601
相關(guān)推薦
- 2022-05-28 C語言實(shí)現(xiàn)宿舍管理課程設(shè)計(jì)_C 語言
- 2022-03-14 怎么去掉Starting new HTTP connection 的提示
- 2022-09-07 Golang使用CGO與Plugin技術(shù)運(yùn)行加載C動(dòng)態(tài)庫_Golang
- 2022-11-06 Python解決多進(jìn)程間訪問效率低的方法總結(jié)_python
- 2023-01-08 簡化Cocos和Native交互利器詳解_React
- 2022-09-16 Pandas?類型轉(zhuǎn)換astype()的實(shí)現(xiàn)_python
- 2024-01-10 右鍵添加 idea 打開功能
- 2023-04-12 python字符串大小寫轉(zhuǎn)換的三種方法_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支