텍스트 파일에서 날짜 (년, 월, 일) 및 시간 (시, 분)을 추출하여 나중에 변수로 사용해야합니다. 숙제가 아니라, 내 일에 유용한 일을하려고합니다. 저는 Linux를 처음 사용합니다.
INPUT : 텍스트 파일에는 다음과 같은 이름의 파일 목록이 포함됩니다.
S3G_MX_1_EFR____20100203T121015_othernumbers.zip
원하는 출력은 다음과 같습니다.
2010 02 03 12 10
연도, 월, 일,시, 분 등 몇 가지 변수로 구분하고 싶습니다. grep을 사용해야합니까? 아니면 sed? 아니면 awk? 많은 독서를했지만 많은 가능성에 스트레스를 받았다. "문자열 뒤에 S3G_MX_1_EFR____
"연도 "인 4 자리 숫자와 같은 표현식을 작성할 수 있습니까? 완전한 코드가 필요하지 않습니다. 사용할 옵션 / 명령 또는 시작 위치에 대한 조언이 필요합니다.
GNU grep 및 bash 사용 :
filename="S3G_MX_1_EFR____20100203T121015_othernumbers.zip"
timestamp=$( echo "$filename" | grep -oP '(?<=\D)\d{8}T\d{4}' )
그때
year=${timestamp:0:4}; echo $year # => 2010
month=${timestamp:4:2}; echo $month # => 02
day=${timestamp:6:2}; echo $day # => 03
hour=${timestamp:9:2}; echo $hour # => 12
minute=${timestamp:11:2}; echo $minute # => 10
사실, 일반 bash가 가능합니다 (버전 4 이상 필요)
regex='_([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})'
if [[ $filename =~ $regex ]]; then
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}
hour=${BASH_REMATCH[4]}
minute=${BASH_REMATCH[5]}
echo "$year $month $day $hour $minute"
fi
2010 02 03 12 10
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다