여러 파일의 여러 변수를 한 번에 일괄 교체

여러 파일의 여러 변수를 한 번에 일괄 교체

$VAR예: 예를 들어 40개의 다른 변수가 있습니다 .txt. /home/user/EXAMPLE/100개의 파일에 있는 모든 변수를 어떻게 바꿀 수 있습니까?

변수가 무엇인지 시스템에 알리려면 유사한 파일 .csv이나 .txt구분 기호가 있는 파일을 사용하는 것이 좋습니다. 예:

$VAR=x 
$VAR2=xx
$VAR3=xxx

일괄 편집 방법을 알고 계십니까?

답변1

질문을 두 부분으로 나눕니다.

  1. 파일 트래버스
  2. 파일에 대체 적용

디렉토리 에 있다면 EXAMPLE다음과 같이 모든 파일을 반복할 수 있습니다.

for file in *.txt
do
    echo "Considering file $file"
done

$PATH이상적으로는 기존 쉘 변수(예: 또는 ) 와 충돌하지 않는 변수 세트를 대체하려면 를 $HOME사용할 수 있습니다 envsubst.

variables.sh각 줄의 형식이 다음과 같은 파일을 만듭니다 .

export varname=value
export anothername='a longer value'

그런 다음 이 코드를 사용하여 명명된 파일과 $varname같은 변수를 바꿀 수 있습니다 .$anothername

( . variables.sh; envsubst ) <"$file" >"$file.tmp" &&
    mv -f "$file.tmp" "$file"

다음을 함께 사용하세요.

for file in *.txt
do
    echo "Considering file $file"
    ( . variables.sh; envsubst ) <"$file" >"$file.tmp" &&
        mv -f "$file.tmp" "$file"
done

관련 정보