linux

grep結果の長い1行を省略して表示する

(–skip-extended-insert をつけていない) mysqldumpの出力ファイルやjavascriptをgrepした際、grep結果の1行が長いと画面を埋め尽くす形で出力されてしまいます。

その場合、正規表現を使用して該当部分だけに切り詰めて表示するといい感じになります。

以下は appendChild というワードの前後10文字まで表示しています。

## -o: マッチした部分だけを表示
## -E: 正規表現が使用できる (egrep は grep -E と同じ)
## 前後10文字のみ表示する
% egrep -o ".{0,10}appendChild.{0,10}" jquery.min.js | head -3       
]);t.head.appendChild(o).parent
{return e.appendChild(d.createC
{return h.appendChild(e).id=b,!
% 


参考にしたサイトだとmacでBSD版を使っている場合はGNU版を使え、と書いてますがその後macのBSD版でもできるようになったようです。自分は以下の環境でできたので。

% egrep --version
egrep (BSD grep) 2.5.1-FreeBSD
% 
% sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.5
BuildVersion:	19F101
 % 

参考

Truncate Long Matching Lines of Grep: a Solution That Preserves Color
正規表現 – Bash入門

タイトルとURLをコピーしました