파일의 문자열을 바꾸고 파일을 덮어씁니다.

파일의 문자열을 바꾸고 파일을 덮어씁니다.

나는 디렉토리를 사용하여 스크립트를 작성했습니다 ~/deleted(긴 스크립트입니다). ~/deleted전체 스크립트를 사용한 후. 사용자가 경로를 ~/.rm.cfg.

내 파일은 다음과 같이 시작됩니다.

#!/bin/bash

defaultpath=~/deleted

if [ -s ~/.rm.cfg ]
then
    defaultpath=$(head -1 ~/.rm.cfg)
fi

스크립트의 모든 항목을 ~/deleted . $defaultpath원본 파일을 저장하고 교체할 수 있도록 명령줄에서 이 작업을 수행할 수 있는 방법이 있습니까?

Perl이나 sed를 작동시킬 수 없습니다.

답변1

sed -i 's|~/deleted|"$defaultpath"|g' file.sh

설명하다:

  • -ised파일이 그 자리에서 수정되도록 지시합니다 .

  • s|~/deleted|"$defaultpath"|gsed대체 항목이 발견된 위치에 ~/deleted있음을 알려줍니다 ."$defaultpath"

보너스: 세 번째 줄에서 ~/삭제 유지

이를 요청하지는 않았지만 예제 스크립트에서는 ~/deleted정의의 세 번째 줄을 변경하지 않고 그대로 두는 것이 더 나을 것입니다 defaultpath. 바꾸다~/deleted 와는 별개로세 번째 줄에서는 다음을 사용합니다.

sed -i -e '3n' -e 's|~/deleted|"$defaultpath"|g' file.sh

그러면 세 번째 줄을 건너뛰었음을 나타내는 명령이 추가됩니다 sed.3nsed

관련 정보