![sed /unix 명령을 사용하여 (yyyymmdd) 사이의 날짜를 바꿉니다.](https://linux55.com/image/167953/sed%20%2Funix%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20(yyyymmdd)%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EB%82%A0%EC%A7%9C%EB%A5%BC%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
아래와 같이 세 개의 .dat 파일이 있다고 가정해 보겠습니다.
Psdm_123_20200221.dat
Psdm_20200221.dat
Psdm_acc_20200221_12345667.dat
산출
Psdm_123*.dat
Psdm_*.dat
Psdm_acc_*.dat
답변1
다음 sed
명령으로 작업을 수행해야 합니다.
sed 's/20[0-9]\{2\}\(0[1-9]\|1[012]\)\([012][0-9]\|3[01]\)[^.]*/*/'
또는 옵션을 sed
이해 했다면 대부분의 백슬래시를 생략할 수 있습니다.-r
-E
sed -r 's/20[0-9]{2}(0[1-9]|1[012])([012][0-9]|3[01])[^.]*/*/'
이는 일부 온전성 검사(2000년에서 2099년 사이의 연도, 01 - 12 범위의 월, 01 - 31 범위의 일)와 함께 "YYYYMMDD" 패턴을 찾아서 교체합니다..
날짜 뒤의 파일 이름에 리터럴이 하나만 있는 경우 그 이후의 모든 항목(파일 확장자를 포함하지 않음). 이는 교체할 표현식에서 "0번 이상을 제외한 모든 것"( )을 허용하여 .
수행 됩니다.[^.]*