括弧内の整数抽出

括弧内の整数抽出

映画の名前と公開年のリストを含むファイルがあります。すべてのリリース年をリストしたいと思います。具体的には、私のファイルは次のようになります。

TDKR(2012)    
Vicky Cristina Barcelona (2008)  
...

次のように正規表現grepを使用してみました。

grep "^.*\\([0-9]*\\)$" movie.txt

うまくいきますが、ライン全体を印刷しているので、年だけが欲しいです。これに使用できますかgrep

答え1

-oGNU grepは一致するパターンを提供して使用できるようにするオプションをサポートしますgrep -o '([0-9]\+)'が、このオプションは括弧も印刷します。ただし、柔軟性と移植性を向上させるには、後処理に次のコマンドを使用する必要がありますsed

grep '([0-9]\+)$' movie.txt | sed 's/.*(\([0-9]\+\))$/\1/'
# assumes that the year is always at the end of the line.

答え2

数値が常に最後のフィールドである場合は、単一のawkコマンドでこれを実行できます。

bash$ awk '{gsub(/\(|\)/," "); print $NF};' $file
2012
2008
...

答え3

パールの使用:

perl -lne 'print for /\((\d+)\)/g'

関連情報