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" 형식이므로 날짜가 포함된 파일에서 직접 date
GNU를 사용할 수 있습니다.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