괄호 안의 정수 추출

괄호 안의 정수 추출

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

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'

관련 정보