매개변수 파일(.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' 구분 기호 사용(: 또는 / 날짜 형식 아님)