sed가 첫 번째 항목만 바꾸는 대신 모든 항목을 바꾸는 이유는 무엇입니까? [복사]

sed가 첫 번째 항목만 바꾸는 대신 모든 항목을 바꾸는 이유는 무엇입니까? [복사]

다음을 사용하여 파일의 첫 번째 항목을 바꾸려고 합니다 sed.

sed -i s/he/He/ dummy.txt

첫 번째 항목을 바꾸는 대신 모든 항목을 바꿉니다(아무것도 아닌 경우라도) /g.

문서에 따르면 첫 번째 항목만 교체해야 합니다.

버전은 sed다음과 같습니다:

GNU sed version 4.1.5

내가 뭐 놓친 거 없니? 아니면 다른 구현이 다르게 동작합니까 sed?

답변1

sed는 입력을 한 줄씩 처리합니다. 수정자는 /g한 줄의 모든 항목을 바꾸는지 아니면 첫 번째 항목만 바꾸는지에 영향을 줍니다.

echo hehe | sed s/h/H/
echo hehe | sed s/h/H/g

파일의 첫 번째 항목만 바꾸려면 다음과 같이 사용하십시오.

s/h/H/            # Replace.
ta                # Go to a if s/// worked.
b                 # Otherwise, start the next cycle.
:a { n            # Process the next line.
     ba           # Go to a.
}

관련 정보