Text-Processing

grep 匹配的字元周圍

  • October 22, 2013

我希望在一個巨大的數據庫轉儲中進行查找和替換,但它沒有做我認為應該發生的事情。我想在文件中查找我的目標字元串,然後查看周圍的 8 個字元左右(我可能需要調整該數字,具體取決於)。我怎樣才能做到這一點?

我無法注意到這一點的原因是因為有數百甚至數千場比賽。我想在字元串周圍獲取一些字元,然後通過管道將其輸入uniq或查看為什麼我的查找和替換出現意外行為。

此外,同一行可以有多個匹配項!

粗略的使用方式grep類似於

grep -o "....yourtext...." /path/to/the/dump.sql

點數對應於 grepped 文本之前/之後的字元數。該-o選項grep只輸出匹配項,而不是整行。

uniq在輸出上使用,請記住您必須先對輸出進行排序。所以通常,你會做

grep . . . | sort | uniq

如果您對每場比賽的命中數感興趣,您可以使用

grep . . . | sort | uniq -c | sort -n

從@rozcietrzewiacz 的答案開始,我可以擴展到

pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file

引用自:https://unix.stackexchange.com/questions/19353