# 문자는 / bin / sed -e 's # abc # zzz # g'에서 무엇을 의미합니까?


답변:


14

그것은 단지처럼 분리의 "/"그것과 동일입니다, 's/abc/zzz/g'.

"abc"를 검색한다는 것은 글로벌 플래그를 사용하여 "zzz"로 바꾸는 것을 의미합니다. 첫 번째 것이 아닌 모든 "abc"에 대해 수행합니다.

패턴 주소에 대체 구분 기호를 사용할 수도 있지만이 경우 올바르게 해석하려면 이스케이프를 이스케이프해야합니다.

sed -r '\#abc#p'

24

그것은 A의 구분 또는 구분. 가장 일반적으로 사용되는 일입니다 /같이

sed 's/old/new/' file

그러나 sed는 명령 다음에 첫 문자를 구분 기호로 사용합니다. 예를 들어 편리한 문자를 사용할 수 있습니다.

sed 's%old%new%' file

파일에 /다른 기존의 구분 문자 가 포함되어있는 경우 매우 유용합니다 . sed식 에 넣을 필요가없는 문자를 구분 기호로 선택할 수 있으므로 많은 성가신 탈출을 줄일 수 있습니다 .

교체하고 싶다고합시다

https://askubuntu.com/questions

https://askubuntu.com/posts

당신은 사용할 수 있습니다

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

그러나 사용하는 것이 좋습니다

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file

그것은 가치, GNU에서 적어도 나오지도 있음을 지적 할 수있다 /댄 다른 상황에서 다른 문자로 대체 할 수있다 s(대체) 명령을 -하지만이 경우는 처음 예를 탈출해야합니다 sed '/foo/d'(삭제 라인을 일치 foo)이된다sed '\#foo#d'
steeldriver을

정말 @steeldriver! -Ravexina가 자신의 답변에이 내용을 추가 한 것을 보았으므로 내 것을 떠날 것입니다 :)
Zanna

1
스트림에 구분 문자가 포함되어 있는지 여부는 중요하지 않습니다. 중요한 것은 검색 문자열 또는 대체 문자열에 구분 문자가 포함되어 있는지 여부입니다.
kasperd

@kasperd 아 맞아. 나는 약간 편집했다 :)
Zanna

@Zanna의 대답은 요점에 가깝습니다. "s"명령 다음의 첫 문자는이 명령에 사용되는 구분 기호를 결정합니다. 당신은 여기에 어떤 문자를 사용할 있습니다. sbabeb와 동일합니다 s/a/e/.
rexkogitans 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.