![sed가 첫 번째 항목만 바꾸는 대신 모든 항목을 바꾸는 이유는 무엇입니까? [복사]](https://linux55.com/image/67341/sed%EA%B0%80%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%ED%95%AD%EB%AA%A9%EB%A7%8C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%8C%80%EC%8B%A0%20%EB%AA%A8%EB%93%A0%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음을 사용하여 파일의 첫 번째 항목을 바꾸려고 합니다 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.
}