grep打印匹配行的未匹配內容

本文首發於我的Github博客
本文記錄了作者使用grepsed命令來實現,打印grep匹配行中的未匹配內容的功能的方法,簡單來說:

  1. 先使用grep <pattern>提取出匹配行
  2. 再使用sed -e 's/<pattern>//g'將匹配內容消除,即可得到未匹配內容

場景與方案

使用grep時,我們可以用grep <pattern>來打印出匹配行,可以使用grep -o <pattern>來打印出匹配行中的匹配內容,但是如果希望能夠實現“反選”,也就是打印出匹配行中的費匹配內容,應該怎麼做呢?

單純的grep命令沒有提供這種機制的支持,但是同時使用grepsed命令就可以實現

> echo "matched not\nmat" | grep "matched" | sed "s/matched//g"
 not

首先,我們使用grep <pattern>打印出匹配行,而後,使用sed "s/<pattern>//g"將匹配行中的匹配內容替換爲空字符串,就消除了匹配內容,留下了非匹配內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章