이름을 포함해야 하는 파일이 너무 많습니다.
Jacqueline
그러나 그 대신 다음 내용이 포함되어 있습니다.
Jacquelin
하지만 가끔은
fooJacquelinbar
또는
123Jacquelin123
또는
/Jacquelin/
유사하게 끝나지 않고 Jacquelin
모든 인스턴스를 어떻게 바꿀 수 있습니까 ?Jacqueline
Jacquelinee
내가 시도한 것은 다음과 같습니다.
find . -name '*' -type f -exec sed -i 's/\bJacquelin\b/Jacqueline/g' {} +
"Jacquelin"
그러나 이는 인스턴스를 추가된 항목 (전체 단어와 일치하지 않음) 으로 대체하지 않습니다 .
답변1
또한 시도
sed 's/\(Jacquelin\)e\?/\1e/g' file
또는
sed -r 's/(Jacquelin)e?/\1e/g' file
답변2
부정적인 예측을 활용하려면 Perl을 사용하는 것이 좋습니다.
perl -pe 's/Jacquelin(?!e)/Jacqueline/g'
Jacquelin
문자가 바로 뒤따르지 않는 경우 e
(뒤에 문자가 없는 경우 포함) 대체됩니다 .
파일을 일괄 편집하려면 -i
플래그를 추가하면 됩니다.
find . -name '*' -type f -exec perl -pi -e 's/Jacquelin(?!e)/Jacqueline/g' {} +
작업은 되돌릴 수 없으므로 사전에 백업해 두십시오.