정의되지 않은 문자열을 수정하려면 sed를 사용하세요.

정의되지 않은 문자열을 수정하려면 sed를 사용하세요.

sed를 사용하여 example="value" 줄이 포함된 "case"라는 문서를 수정해야 합니다. 여기서 value는 2~3자의 정수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

example=55
example=777
otherthing=anothervalue

sed를 사용하여 두 예제 라인을 다음과 같은 두 라인으로 수정하고 싶습니다. example=000

나는 사용해 보았습니다.

sed -i -e "s/example=*/example=000/g" case 

동시에 수정했지만 분명히 작동하지 않습니다. 내가 알아야 할 것은 sed가 뒤에 2~3자를 취하도록 만드는 방법입니다.=

답변1

*for의 다양한 의미를 혼동하고 계십니다.쉘 파일 이름 확장자그리고Posix 기본 정규식( BRE).

정규 표현식에서 는 *앞에 오는 문자의 수량자이므로 =*0개 이상의 발생을 의미합니다 =. "임의의 문자 수"를 원하면 를 사용하십시오 .*.

sed -i -e 's/example=.*/example=000/' case 

추가 팁:

  • g문자열은 한 줄에 한 번만 나타날 수 있으므로 수정자를 생략할 수 있습니다 .
  • 만약 너라면아니요또한 일치시키려면 another_example=value이것을 사용하여 줄의 시작 부분에 ^example=.*있는지 확인하십시오 .example
  • .[0-9]또는 [[:digit:]]]문자는 사용할 수 없고 숫자만 일치시킬 수 있습니다.
  • *대신 수량자를 사용할 수 있습니다 +. 이는 다음을 의미합니다.1자 이상( GNU에서 \+일반처럼 이스케이프하거나 작성 해야 합니다).BREsed\{1,\}sed

2~3개의 문자만 일치시키려면 할 수 있습니다.

sed -i -e 's/example=.\{2,3\}/example=000/' case 

또는 확장 정규식( ERE)( sed -E)을 사용합니다.

sed -i -E -e 's/example=.{2,3}/example=000/' case 

관련 정보