모든 'sed'의사들에게 :
줄에서 일치하는 정규식을 추출하기 위해 'sed'를 얻는 방법은 무엇입니까?
즉, 포함 줄의 모든 일치하지 않는 문자가 제거 된 정규식에 해당하는 문자열 만 원합니다.
아래와 같은 역 참조 기능을 사용해 보았습니다.
regular expression to be isolated
gets `inserted`
here
|
v
sed -n 's/.*\( \).*/\1/p
이것은 다음과 같은 일부 표현식에서 작동합니다.
sed -n 's/.*\(CONFIG_[a-zA-Z0-9_]*\).*/\1/p
'CONFIG_ ....'(일부 '* .h'파일에 있음)로 시작하는 모든 매크로 이름을 깔끔하게 추출하고 한 줄씩 모두 인쇄합니다.
CONFIG_AT91_GPIO
CONFIG_DRIVER_AT91EMAC
.
.
CONFIG_USB_ATMEL
CONFIG_USB_OHCI_NEW
.
e.t.c.
그러나 위의 내용은 다음과 같이 분류됩니다.
sed -n 's/.*\([0-9][0-9]*\).*/\1/p
이것은 항상 다음과 같은 한 자리를 반환합니다
7
9
.
.
6
연속 번호 필드를 추출하는 대신.
8908078
89670890
.
.
.
23019
.
e.t.c.
추신 : 'sed'에서 이것이 어떻게 달성되는지에 대한 피드백에 감사드립니다. 'grep'과 'awk'로이 작업을 수행하는 방법을 알고 있습니다 .'sed '에 대한 이해가 제한되어 있지만'sed '에 구멍이 있는지, 내가
가지고 있는'sed '에이 작업을 수행 할 수있는 방법이 있는지 알고 싶습니다 . 단순히 간과했다.