[duplicate]를 추가하는 대신 sed를 사용하여 찾아 바꾸기

[duplicate]를 추가하는 대신 sed를 사용하여 찾아 바꾸기

표준 출력에 간단한 URL 텍스트가 있습니다. URL의 일부가 아래에 표시됩니다.

https://somedomain./xx?t=s&u=random other text

명령줄에서 sed나 다른 것을 사용하여 이것을 변경하고 싶습니다.

https://somedomain./xx?t=l&u=random other text

나는 사용했다sed -e 's/s&/l&/'

로 바꾸는 대신 s&문자열을 입력했습니다. 내 주문에 문제가 있나요?l&ls&

답변1

s명령 오른쪽에 "\"를 추가하여 명령 오른쪽의 "&" 문자를 이스케이프해야 합니다. 이것이 없으면 "&"는 특별하며 정규 표현식과 일치하는 항목으로 대체됩니다. 왼쪽의 "&"는 특별하지 않으며 비특별함을 보장합니다. while은 &결코 특별하지 않고, \&특별하다고 보장되지 않으며, 일치하는 항목이 지정되지 않기 때문에 이스케이프를 피하고 싶지 않습니다 .

그래서:

sed -i 's/s&/l\&/g' file.txt

관련 정보