답변:
다음 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
<
있지만 내 의견으로는 접근하기가 쉽지 않습니다 (여기에는 내용이 있습니다. 여기는 파이프가 있습니다> 여기가 결과입니다). 나는 좋은 코드 골퍼가 아닙니다. grep .
빈 줄 이 비어 있습니다 (파일을 모르겠습니다). sed s,...
매뉴얼이 다르게 말하지만 작동합니다. 그것은 습관이라고 생각합니다.
<file
는 처음에도 갈 수 있습니다 <file sed 's…' | etc
. 또한, man sed
단부 (AT 섹션 갖는 SEE ALSO
리드 "전체 설명서")에 info sed
>를 sed scripts
> The "s" Command
.
날짜는 미국 "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 매뉴얼에 설명되어 있습니다 .
date
는 구문 분석 방법을 알고 있습니다. 날짜가 GNU date
가 구문 분석 할 수없는 다른 형식 인 경우 입력에서 간단한 재 배열이 이루어질 수 있습니다.
로 awk
:
awk -F'/' '{print $3}' textfile
sed -e 's|.*/||' input_file
grep -oP '(?:^|\h)(?:\d\d?/){2}\K\d{4}(?=\h|$)' input_file
지원 grep
과 함께 사용하면 PCRE
input_file에 행당 하나 이상의 날짜 유형 문자열이있을 때 표시된대로 수행 할 수 있습니다.
cat
만,<file sed
또는sed 's/…' file
. 또한 다른 구분 기호를 사용하여 가독성을 높일 수 있습니다/
. 예를 들어sed 's,…,…,g'
, 리터럴을 이스케이프 처리하지 않아도됩니다/
. 마지막으로 목적은grep
무엇입니까?