sed를 사용하여 스크립트에서 문자열 교체


0

sed 명령을 처음 사용하고 "MONYY"가 포함 된 sql이 있으며 파일에서 "MONYY"를 현재 "MONYY"로 자동 변경하여 파일에서 "MONYY"를 변경하고 싶습니다.

다음 명령을 사용했으며 이전 달과 연도 및 현재 월과 연도를 대문자로 가져올 수 있으며 sed 명령을 사용하여 스크립트의 값을 바꾸려고하지만 아무 일도 일어나지 않습니다.

date1=$ date +"%b%y"|sed 's/\(.*\)/\U\1/'

echo $date1

date2=$ date -d ' -1 month ' +"%b%y"|sed 's/\(.*\)/\U\1/'

echo $date2

sed 's/$date1/$date2/g' aggdom.sql > temp

누구든지 내가 사용하는 sed 명령으로 나를 도울 수 있습니까?

답변:


1

이 스크립트는 위의 모든을 대체 할 $date1함께$date2

그러나 결과는 temp파일 로 인쇄 됩니다

에서 문자열을 변경하려면 aggdom.sql

줄을 다음과 같이 변경해야합니다.

sed -i 's/$date1/$date2/g' aggdom.sql 

에서 sed매뉴얼 페이지

-i [SUFFIX], --in-place [= SUFFIX]

         edit files in place (makes backup if extension  supplied).   The
          default  operation  mode  is  to  break symbolic and hard links.
          This can be changed with --follow-symlinks and --copy.

일부 운영 체제 -e에서는 옵션 으로 추가해야합니다 .

sed -i -e s/$date1/$date2/g aggdom.sql

안녕하세요 Networker, 당신이 처음 옳았습니다. $ date2가있는 모든 $ date1을 다른 파일에 넣으려고합니다. 그러나 나는 당신이 제공 한 명령을 시도했지만 여전히 aggdom.sql에서 변경 사항이 없습니다. 날짜는 그대로 유지됩니다.
user342220

사용중인 OS
Networker

GNU / Linux를 사용하고 있습니다
user342220

-e를 추가 할 때도 마찬가지입니다. sed 대신 사용할 수있는 다른 명령이 있습니까?
user342220
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.