それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

grepで先読み後読みを使うには

grep正規表現で「後読み」「先読み」を使うには

このようにするとマッチした文字をガッツリ取り出せる。

grep -Po '(?<=cond)\w+'
grep -Po '\w+(?=cond)'
役割 書式 サンプル
condが接頭 (?<=cond) (?<=Debian Gnu)\w+
接辞がcond (?=cond) \w+(?<=Linux)

( -P は必須です)

サンプル/実際に活用した例。

takuya@orangepizero:~$ uname -a
Linux orangepizero 3.4.113-sun8i #18 SMP PREEMPT Thu Jun 15 02:16:06 CEST 2017 armv7l GNU/Linux
takuya@orangepizero:~$ uname -a  | \grep -P -o  '(?<=Linux\s)\w+'
orangepizero
takuya@orangepizero:~$

grep マッチのポイント( POSIX互換必須)

grep は 殆どの場合、alias されている。なので -E などとかぶらないようにする

そのために aliasを一時的にオフにするなどと組合せて戦うと便利。

\grep -P  regex

マッチしないものを取り出す。

否定は余り使うことがないのだけれど。マッチしないものを取り出す場合もできる。

grep -Po '(?<!except)\w+'
grep -Po '\w+(?!except)'

2023-09-26

  • 否定を追加
  • PCRE に言及
  • サンプル追加

関連資料

一時的にaliasをオフ無効にする バックスラッシュ - それマグで!