映画の名前と公開年のリストを含むファイルがあります。すべてのリリース年をリストしたいと思います。具体的には、私のファイルは次のようになります。
TDKR(2012) Vicky Cristina Barcelona (2008) ...
次のように正規表現grepを使用してみました。
grep "^.*\\([0-9]*\\)$" movie.txt
うまくいきますが、ライン全体を印刷しているので、年だけが欲しいです。これに使用できますかgrep
?
答え1
-o
GNU 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'