꺼내려고 하는데제삼이 줄의 하위 표현식:
#EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"
( adduser.conf
궁금하신 분들을 위해 예, 해당 파일이 있습니다):
sed 's/\(EXTRA_GROUPS=\)\("\)\(.*\)\("\)/\3/' adduser.conf
이것이 작동하고 생산하는 동안
#dialout cdrom floppy audio video plugdev users
#
(표현에서 기호는 생략하였으니 무시해주세요), 이
sed 's/\(EXTRA_GROUPS=\)\("\)\(.*\)\("\)//3' adduser.conf
그렇지 않고 파일을 그대로 둡니다.
마지막 예제에서는 역참조 번호 3을 제거해야 한다는 것을 알고 있지만 /sd/3
("세 번째 하위 표현식을 sd
"로 바꾸기)를 사용하여 명령을 수정하면 실제로 아무 작업도 수행되지 않습니다.
-n //p
동일한 결과를 얻기 위해 options-all을 사용하여 명령을 실행해 보았습니다 .
sed
저는 Debian Jessie 컴퓨터에서 GNU 버전 4.2.2를 사용하고 있습니다.
핵심 유틸리티 "교육"의 일부 핵심 부분을 놓치고 있습니까? 아니면 한동안 태양에서 벗어나 있었습니까?
답변1
이것/n
배너대체 명령은 아무 s
관련이 sed
없습니다역참조 \n
.
- 예를 들어,
s/regex/string/3
현재 줄에서 세 번째 항목을 로 바꿀 수 있습니다.regex
string
- 를 사용하면
s/regex/\3/
첫 번째 항목을regex
세 번째 캡처링 그룹으로 바꿀 수 있습니다. - 를 사용하면
s/regex/\3/3
세 번째 일치 항목을regex
세 번째 캡처링 그룹으로 바꿀 수 있습니다.
이 경우에는 아마도 다음과 같은 더 간단한 것을 사용하겠습니다.
sed 's/^.*EXTRA_GROUPS="\([^"]*\)".*$/\1/'
문자열을 사용하지 않는 경우 문자열의 비트를 캡처하는 것은 쓸모가 없습니다.