"sed"는 텍스트 파일의 날짜를 현재 날짜로 바꿉니다.

"sed"는 텍스트 파일의 날짜를 현재 날짜로 바꿉니다.

매개변수 파일(.txt)을 호출하려고 하며 작업이 트리거될 때 내 애플리케이션이 동적 값을 읽습니다. 값 중 하나는 다음과 같습니다.

abc.txt
------------------
Code:
line1
line2
line3
$$EDWS_DATE_INSERT=08-27-2019
line4
$$EDWS_PREV_DATE_INSERT=08-26-2019

이 날짜를 매일 현재 날짜로 업데이트하는 간단한 명령을 작성하려고 하는데 날짜 값을 바꾸지는 않습니다.
암호:

sed -i 's/$$EDWS_DATE_INSERT =.*/$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"/' abc.txt

현재 결과:

$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"

누구든지 도와줄 수 있나요?

답변1

명령에 추가 공간이 있습니다

sed -i 's/$$EDWS_DATE_INSERT<extra_space>=.*/$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"/' abc.txt

내 생각에 당신이 찾고 있는 것은 다음과 같습니다.

sed -i "s/\$\$EDWS_DATE_INSERT=.*/\$\$EDWS_DATE_INSERT=$(date '+%y%m%d')/" abc.txt

더 좋은 점은 다음과 같습니다.

sed -E -i "s/(\\\$\\\$EDWS_DATE_INSERT=).*/\1$(date '+%y%m%d')/" abc.txt

산출:

line1
line2
line3
$$EDWS_DATE_INSERT=190827
line4
$$EDWS_PREV_DATE_INSERT=08-26-2019

sed작은따옴표를 큰따옴표로 바꾸세요. 백틱을 작은따옴표로 바꾸세요.

편집: 내 이전 명령은잘못된. 업데이트에는 고정 명령을 사용하십시오.

답변2

나는 다음과 같은 것을 달성하기 위해 작은 스크립트를 사용합니다.

#!/bin/bash
DATE_NOW=$(date +"%Y/%m/%d %T")
echo "its: $DATE_NOW"
sed -i 's|DEV-BuildTime.*|DEV-BuildTime '"$DATE_NOW"'|' path/to/file

노트:

  • 정규식 해석에 대해 걱정하지 마세요.
  • | 's' 구분 기호 사용(: 또는 / 날짜 형식 아님)

관련 정보