여러 파일에서 복잡한 텍스트 줄 바꾸기

여러 파일에서 복잡한 텍스트 줄 바꾸기

Linux다양한 하위 폴더에 이름이 여러 개인 파일이 있습니다 .전반적으로

DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'`

로 교체해야합니다

DSY_OS_Release="RedHatEnterpriseWorkstation"

명령줄을 사용하여 이를 어떻게 달성할 수 있습니까?

중복된 질문처럼 들리지만 다소 복잡한 문자열에 적합한 답변을 찾을 수 없습니다.

답변1

전체 줄을 일치시킬 필요가 없다면 다음을 사용하십시오.

sed 's/^DSY_OS_Release=.*/DSY_OS_Release="RedHatEnterpriseWorkstation"/'

구현 에 따라 sed를 사용할 수도 sed -i '...' file있고, 새 파일로 리디렉션한 후 원본 파일을 바꿔야 할 수도 있습니다.

파일 세트에서 실행하는 방법은 다음과 같습니다. 모든 파일이 특정 패턴과 일치하는 경우(예: *.configGNU 가정 sed):

find /some/path -type f -name '*.config' \
    -exec sed -i '...as above...' {} \;

관련 정보