영화 이름과 개봉 연도 목록이 포함된 파일이 있습니다. 모든 출시 연도를 나열하고 싶습니다. 구체적으로 내 파일은 다음과 같습니다.
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'