반응형
sed를 사용하여 문자열에서 텍스트를 추출하는 방법은 무엇입니까?
내 예제 문자열은 다음과 같습니다.
This is 02G05 a test string 20-Jul-2012
이제 위의 문자열에서 02G05
. 이를 위해 sed와 함께 다음 정규식을 시도했습니다.
$ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p'
그러나 위의 명령은 아무것도 인쇄하지 않으며 내가 믿는 이유는 내가 sed에 제공 한 패턴과 일치 할 수 없기 때문입니다.
그래서, 내 질문은 내가 여기서 뭘 잘못하고 있고 그것을 수정하는 방법입니다.
위의 문자열과 패턴을 파이썬으로 시도하면 결과가 나타납니다.
>>> re.findall(r'\d+G\d+',st)
['02G05']
>>>
이 패턴 \d
은 sed
. [0-9]
또는 [[:digit:]]
대신 시도하십시오 .
전체 일치 행이 아닌 실제 일치 만 인쇄하려면 대체를 사용하십시오.
sed -n 's/.*\([0-9][0-9]*G[0-9][0-9]*\).*/\1/p'
사용은 egrep
어떻습니까?
echo "This is 02G05 a test string 20-Jul-2012" | egrep -o '[0-9]+G[0-9]+'
대신 이것을 시도하십시오.
echo "This is 02G05 a test string 20-Jul-2012" | sed 's/.* \([0-9]\+G[0-9]\+\) .*/\1/'
그러나 한 줄에 두 개의 패턴이 있으면 두 번째 패턴을 인쇄합니다.
sed
인식하지 못하는 경우 \d
, 사용 [[:digit:]]
대신. 또한 이스케이프 +
하거나 -r
스위치 ( -E
OS X의 경우)를 사용해야합니다 .
참고 [0-9]
아랍어 힌두교 숫자뿐만 아니라 작동합니다.
rextract를 사용해보십시오 . 정규식을 사용하여 텍스트를 추출하고 다시 형식화 할 수 있습니다.
예:
$ echo "This is 02G05 a test string 20-Jul-2012" | ./rextract '([\d]+G[\d]+)' '${1}'
2G05
참고 URL : https://stackoverflow.com/questions/11568859/how-to-extract-text-from-a-string-using-sed
반응형
'code' 카테고리의 다른 글
데이터베이스에서 장고 모델을 생성 할 수 있습니까? (0) | 2020.09.25 |
---|---|
JUnit으로 Java에서 추상 클래스를 테스트하는 방법은 무엇입니까? (0) | 2020.09.24 |
MiniTest의 assert_raises / must_raise에서 예외 메시지를 확인하기위한 예상 구문은 무엇입니까? (0) | 2020.09.24 |
Python을 다른 폴더에서 가져올 수 없습니다. (0) | 2020.09.24 |
성능 및 Java 상호 운용성 : Clojure 대 Scala (0) | 2020.09.24 |