여기 초보자입니다. 폴더의 모든 파일에 대해 다음 순서를 대체할 bash 스크립트를 작성하려고 합니다.
[tr][tr]{X}
여기서 X는 소수(숫자 집합 및 "."), 여기서 ” 컬렉션)입니다
[tr][tr]{\tinyX}
.
어떤 아이디어가 있나요?
감사해요
답변1
GNU에 액세스할 수 없다면 sed
다음을 사용할 수도 있습니다 perl
(실제로는 -i
GNU 에서 빌려옴 sed
).
find . -type f -exec perl -Tpi -e 's/\Q[tr][tr]{\E\K[\d.]+\}/\\tiny$&/g' {} +
답변2
GNU는 sed
전역 대체 모드를 사용합니다 s/regexp/replacement/g
.
sed -i'' 's/\(\[tr\]\[tr\]{\)\([0-9.]\+}\)/\1\\tiny\2/g' /path/to/folder/*
이는 한 세트의 문자열을 캡처 [tr][tr]{
하고 X
하나 이상의 숫자 또는 ( 대괄호 안의 문자와 한 번 이상 일치하는 대괄호 표현식)을 포함 .
하고 두 번째 세트로 끝나고 일치하는 부분을 첫 번째 세트로 대체합니다 . 두 번째 그룹 라인. 그룹 대괄호, 리터럴 대괄호 및 리터럴 백슬래시는 다른 백슬래시를 사용하여 이스케이프해야 합니다.[0-9.]\+
\+
}
\tiny
()
[]
+
\
이 프로그램을 실행하기 전에 데이터 폴더를 반드시 백업하십시오(또는 원본 파일을 로 두는 -i.back
대신 사용하십시오 ).-i''
filename.back