Linux コマンドと正規表現でテキストファイルから特定のパターンの文字列を抜き出したい

備忘録。テキストファイルから特定のパターンの文字列を抜き出したい。

例1) hogehoge + 数字8桁 のパターンに合致する文字列を抜き出し、重複を削除して、prefix の hogehoge は除いて数字部分だけ出力する。

grep -o '\bhogehoge[0-9]\{8\}\b' sample.txt | sort | uniq | sed -e "s/hogehoge//" > sample2.txt

例2) 先に fugafuga を含む行を除いてから 例1 をやりたいとき。

sed '/fugafuga/d' sample.txt | grep -o '\bhogehoge[0-9]\{8\}\b' | sort | uniq | sed -e "s/hogehoge//" > sample2.txt

uniq は入力のテキストがソート済みである必要があるため、先に sort で並べ替えておく。\b正規表現で単語の境界をチェックするもの。(これは初めて知った)

現場からは以上です。