텍스트 파일(Fortran 소스 코드)의 형식을 지정하고 일부 키워드를 소문자에서 대문자로 또는 그 반대로 변경해야 합니다. 가능한 키워드 목록을 만들고 다음 스크립트를 작성했습니다.
for ((i=0; i<$nwords; i++ )); do
word=${words[$i]}
small=${word,,}
cap=${word^^}
sed -i "s/$small/$cap/gI" $filein
done
제대로 작동합니다. 질문은 다음과 같습니다.
키워드 중 하나가 "use"이고 테스트 어딘가에 "uselog"라는 단어가 있다고 가정해 보겠습니다. 스크립트는 이를 어쨌든 피하고 싶은 "USERlog"로 변경합니다. 내 생각은 키워드에 공백을 추가하는 것이었지만 어떻게 든 자동으로 잘립니다. 내 말은, "사용" 대신 "사용" 또는 "사용"을 시도했지만 결과는 동일하다는 것입니다.
따옴표, 대괄호 또는 이와 유사한 것을 사용하는 것과 같이 이를 수행하는 쉬운 방법이 있어야 한다고 생각하지만 지금까지 찾지 못했습니다. 다른 대안도 환영합니다.
답변1
단어 경계를 사용하면 GNU sed
사용할 수 있습니다\b
단어 경계와 일치합니다. 즉, 왼쪽의 문자가 "단어" 문자이고 오른쪽의 문자가 "비단어" 문자인 경우 일치하며 그 반대의 경우도 마찬가지입니다.
sed 's/\bword\b/newword/g' file.txt
키워드를 입력하려면 space
:
sed 's/\sword\s/ newword /g' file.txt
참고하세요뉴워드양쪽에 하나씩 공간이 있습니다.