sed
문자열 주위에 괄호 쌍을 배치하기 위해 oneliner를 사용하고 싶습니다 .
내가 시도한 것은 다음과 같습니다.
echo 1 | sed -e 's/.*/(\0)/'
문자가 1
패턴과 일치하도록 하고 싶습니다 .*
.
그러나 출력은 단지
(0)
실제로 다음과 같은 결과를 얻고 싶습니다.
(1)
sed
OSX에서 BSD를 사용하고 있습니다
답변1
&
전체 패턴 일치를 교체하는 표준 방법입니다. 일부 sed
구현(예: GNU 또는 busybox)은 이를 \0
대안으로 지원하지만 이는 표준이거나 이식 가능하지 않습니다.
$ echo 1 | sed -e 's/.*/(&)/'
(1)
명령에 첫 번째(비어 있을 수 있음) 시퀀스가 포함되어 있습니다.수치, 한 줄에 괄호 안에 최대한 많이 입력하세요. 여기에는 유효한 문자를 형성하지 않는 바이트가 포함된 줄의 전체 줄이 포함되지 않을 수 있습니다. 이 경우 다음을 찾을 수 있습니다.
sed 's/^/(/; s/$/)/'
더욱 안정적으로 작동하며 완전히 밀폐되어 있습니다.철사괄호 안에.
답변2
\1
첫 번째 캡처 그룹이 참조됩니다. 현재 캡처 그룹이 없으므로 중괄호를 사용하여 일치 항목을 캡처 그룹으로 정의하고 다음을 사용하여 참조할 수 있습니다 \1
.
$ echo 1 | sed 's/\(.*\)/(\1)/'
(1)
답변3
나는 다음 awk 명령을 사용하여 이 작업을 수행했습니다.
echo 1 | awk '{print "("$0")"}'
산출
(1)