![[duplicate]를 추가하는 대신 sed를 사용하여 찾아 바꾸기](https://linux55.com/image/106686/%5Bduplicate%5D%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%8C%80%EC%8B%A0%20sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%B0%BE%EC%95%84%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
표준 출력에 간단한 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