파일의 텍스트 바꾸기

파일의 텍스트 바꾸기

숫자가 포함된 모든 텍스트를 바꾸고 해당 숫자를 제거하는 유용한 명령이 있습니까?
전임자:

myimages-202x250.jpg
width="202" heignt="250" 


다음으로 교체

myimages.jpg
width="217" height="317" 

sed를 사용해 보았지만 작동하지 않습니다

sed -i 's/*-*x*.jpg/.jpg/g' myfile.sql

답변1

@Costas가 지적했듯이 globbing 모드를 사용하고 sedBRE를 사용하고 있습니다.일반적인 표현( sed의 옵션이 사용된 경우 -rERE ).

명령은 다음과 같아야 합니다.

sed -i -r 's/-[0-9]+x[0-9]+\.jpg/.jpg/g' myfile.sql

설명하다:

  • [0-9]"모든 숫자"(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)를 의미합니다.
  • +"하나 이상의 이전 원자"를 의미합니다( ERE에서만 특별한 의미를 가지므로 -r스위치가 필요함 ).+

따라서 패턴은 -[0-9]+x[0-9]+\.jpg다음을 의미합니다. "리터럴, -하나 이상의 숫자, 리터럴 x, 하나 이상의 숫자, 리터럴 .(RE에서는 백슬래시가 특수 문자이므로 중요함 .), 그 뒤에 텍스트 jpg.

편집하다:

명확하게 설명하면 다음과 같이 원하는 작업이 수행됩니다.

sed -i -r -e 's/-[0-9]+x[0-9]+\.jpg/.jpg/g' -e 's/width="[0-9]+" *height="[0-9]+"/width="217" height="317"/' myfile.sql

추가된 패턴은 width="[0-9]+" *height="[0-9]+"위와 동일한 원리를 기반으로 하며 하드코딩된 문자열로 대체됩니다 width="217" height="317".

관련 정보