날짜에서 연도(mm/dd/yyyy)를 추출하는 방법

날짜에서 연도(mm/dd/yyyy)를 추출하는 방법

mm/dd/yyyy 형식으로 날짜에서 연도를 추출하는 방법은 무엇입니까?

다음 날짜가 포함된 텍스트 파일이 있습니다.

01/01/2001
05/16/1970
06/08/2010

sed를 사용하여 이 날짜에서 연도만 추출하려면 어떻게 해야 합니까?

답변1

다음과 같이 시도해 보세요 sed.

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' > newfile

호출한 파일을 읽고 file결과를 새 파일에 씁니다 newfile(필요에 따라 교체).

연도를 수집하려면 다음과 같이 할 수 있습니다.

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' | tr ' ' \\n | grep . | sort -nu

답변2

echo "01/01/2001 05/16/1970 06/08/2010" > datefile
sed 's:[0-1][0-9]/[0-3][0-9]/::g' datefile

결과:2001 1970 2010

이는 모든 날짜가 한 줄에 있을 때와 각 날짜가 별도의 줄에 있을 때 모두 작동합니다. 명확성을 돕기 위해 구분 기호가 제공됩니다 :. 전역 g옵션은 모든 유효한 대체를 수행합니다.

답변3

날짜는 미국 "MM/DD/YYYY" 형식이므로 날짜가 포함된 파일에서 직접 dateGNU를 사용할 수 있습니다.dates

$ date -f dates "+%Y"
2001
1970
2010

다음과 같이 더 멋진 형식을 지정할 수 있습니다.

$ date -f dates "+%F is in %Y and is a %A"
2001-01-01 is in 2001 and is a Monday
1970-05-16 is in 1970 and is a Saturday
2010-06-08 is in 2010 and is a Tuesday

%Y형식 지정 순서( 등)은 GNU 매뉴얼에 설명되어 있습니다 date.

GNU가 처리하는 입력 형식은 date다음에 설명되어 있습니다.GNU coreutils 매뉴얼.

답변4

그리고 awk:

awk -F'/' '{print $3}' textfile

관련 정보