Unix 스크립트에서 전체 줄 찾기 및 바꾸기

Unix 스크립트에서 전체 줄 찾기 및 바꾸기

이라는 스크립트가 있습니다 praveen.pl. 이 스크립트에는 여러 줄이 포함되어 있으며 그 중 하나는 다음과 같습니다.

$input_store_nbr = "00100";

내부 숫자는 "nnnnn"입력에 따라 수동 테스터에 의해 변경됩니다. 그래서 저는 이 줄을 찾아서 "nnnnn"입력한 내용에 따라 변경하고 싶습니다.

예를 들어, 내 입력이 10000다음 줄인 경우 praveen.pl다음으로 변경해야 합니다.

$input_store_nbr = "10000";

다음에 이 줄로 바꾸고 싶다면 20000다음으로 바꿔야 합니다.

$input_store_nbr = "20000";

praveen.pl파일에서 매장 번호 편집을 자동화하려고 합니다.

답변1

이 스크립트를 수정해야 하지만 이상한 이유로 명령줄 인수를 허용하도록 수정할 수 없는 경우 다음을 시도해 볼 수 있습니다.

new_val=5000
sed -e "s/\$input_store_nbr = \"[0-9]+\";/\$input_store_nbr = \"$new_val\";/" src_file > tmp_file
mv tmp_file src_file

sed또는 이를 지원하는 파일(예: 매개변수가 있는 GNU 또는 BSD)이 있는 경우 (명시적) 임시 파일을 요구하지 않고 이 -i플래그를 사용할 수 있습니다.sed

나는 여전히 다음을 수행하기 위해 소스 스크립트를 한 번 수정하는 것이 더 나을 것이라고 생각합니다(이미 수정했으므로).

$input_store_nbr = $ARGV[0];

sed그런 다음 파일을 다시 작성하기 위해 스크립트에 전달하는 것처럼 새 번호를 첫 번째 명령줄 인수로 사용하여 호출합니다 .

관련 정보