備忘録。テキストファイルから特定のパターンの文字列を抜き出したい。
例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
は正規表現で単語の境界をチェックするもの。(これは初めて知った)
現場からは以上です。