我有一个文件,其中包含电影名称及其发行年份的列表。我想列出所有发布年份。具体来说,我的文件如下所示
TDKR(2012) Vicky Cristina Barcelona (2008) ...
我尝试用正则表达式 grep 如下
grep "^.*\\([0-9]*\\)$" movie.txt
它有效,但它正在打印整行,我只想要几年。我可以用 来做吗grep
?
答案1
GNU grep 支持一个-o
选项,该选项将为您提供匹配模式,因此您可以使用,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:
perl -lne 'print for /\((\d+)\)/g'