2
REGEXP sed에 ^|.
과 같은 것을 포함하는 대체를 수행하면 첫 번째 문자가 일치하는 경우 패턴 공간의 시작 부분에서 null 문자열과 일치하지 않습니다. 또한 마지막 문자가 일치하면 끝과 일치하지 않습니다. 왜 그런가요? 여기
-r
옵션)
123
사용하여 몇 가지 예입니다 :
\`
대신
^
으로 사용하는 경우
substitution expected output actual output comments
s/^/x/g x123 x123 works as expected
s/$/x/g 123x 123x works as expected
s/^|$/x/g x123x x123x works as expected
s/^|./x/g xxxx xxx didn't match the very begining
s/.|$/x/g xxxx xxx didn't match the very end
s/^|1/x/g xx23 x23 didn't match the very begining
s/^|2/x/g x1x3 x1x3 this time it did match the begining
내가 같은 결과를 얻을 수 있습니다.
나는 GNU 나오지 버전 4.2.1과 4.2.2 AFAIK 교대에서 가장 긴 일치 일치하도록 노력할 것 나오지
그래서 처음에는 null 문자열을 자신의 위치로 취급하지 않습니까? 어떤면에서는 첫 번째 캐릭터의 일부입니까? – Riley
'^'는 널 문자열과 일치하고, 일치 길이는 0이며 첫 번째 위치의 '1'은 길이가 1입니다. 따라서이 문자열은 바뀝니다. 둘 다 일치하지만 가장 긴 것만 대체됩니다. – andlrc
둘 다 대체되지 않는 이유는 무엇입니까? ''123 '이 더 길더라도'sed '/ 12 \ | 123/x/g <<< 12123'는'12'와'123'을 대체합니다. – Riley