파일의 줄을 sed로 패턴으로 바꾸는 방법은 무엇입니까?


27

sed에 대한 많은 문서를 읽고 있는데도 여전히 특정 사용 사례에 대해 잘 알고 있습니다.

conf 파일 의이 줄을 내 줄로 바꾸고 싶습니다.

이 줄을 바꾸십시오 :

#maxmemory <바이트>
와:
최대 메모리 26GB

이것이 내가 시도한 것입니다.

sed s / maxmemory. * bytes. * / maxmemory 26gb / /etc/redis/redis.conf

오류가 발생합니다.

sed : -e expression # 1, char 30 : 종결되지 않은`s '명령

그것이 무엇을 의미하는지 모르기 때문에 어느 것이 저를 비웃습니다. 그래서 내 질문은 :

원하는 것을 어떻게 달성 할 수 있습니까? 그 오류는 무엇을 의미합니까? (그래서 배울 수 있습니다)

답변:



11

과연

오류는 따옴표가 없으면 쉘이 공백을 사용하여 인수를 구분한다는 것을 의미합니다. 사이의 공간 maxmemory과는 26gb이에 따라서 단자가없는 제 인수 종료로 간주되는 /경우에 sed그 명령의 하나로서 그 인수를 파싱 온다.

정규식을 작은 따옴표로 묶어 쉘이 여러 인수로 나누지 않고 sed하나의 단일 인수로 전달하지 않으면 문제가 해결됩니다.

$ sed s/maxmemory.*/maxmemory 26gb/ /some/file/some/where.txt
sed: -e expression n°1, caractère 23: commande `s' inachevée

동안

$ sed 's/maxmemory.*/maxmemory 26gb/' /some/file/some/where.txt

공장.

희망이 도움이됩니다.


1
그렇지 않습니다 sed. 이 작업 을 수행하는 것이 입니다.
JdeBP

물론 당신은 옳습니다. :)
Sxilderik

3

이 명령으로 유스 케이스를 해결할 수 있습니다.

sed -i -e 's/#maxmemory.*/maxmemory 26gb/g' /etc/redis/redis.conf

5
작은 설명을 추가하고 싶을 수도 있습니다.
davidbaumann

2
-e는 필자의 경우 MacOS에 필요했습니다.
Cancerbero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.