파일의 각 줄에서 문자열 추출

파일의 각 줄에서 문자열 추출

각 줄에 >와 < 문자 사이에 단어가 있는 문장이 포함된 파일이 있습니다. 예를 들어:

Martin went shopping at >Wallmart< and lost his wallet
French food >tastes< great

각 줄의 "">" 및 "<" 안의 단어를 인쇄하는 셸에서 실행할 명령을 찾고 있습니다.

미리 감사드립니다.

답변1

무엇에 대해 grep?

grep -oP "(?<=\>).*(?=<)"  file

산출:

Wallmart
tastes

편집하다:

@Toby Speight의 의견에 따라 >와 < 사이에 단어만 있다고 가정하여 다른 컨텍스트에서 >와 <가 일치하지 않도록 하려면 명령은 다음과 같아야 합니다.

grep -oP "(?<=\>)\w+(?=<)"  file

답변2

을 위한 awk:

awk -F '[><]' '{print $2}' file

그러면 필드 구분 기호가 >or 로 설정되고 <두 문자 사이의 내용인 두 번째 필드가 인쇄됩니다.

을 위한 sed:

sed 's|.*>\(.*\)<.*|\1|' file

>()를 사용하여 그 사이의 모든 내용과 그 뒤의 내용 , 그 이전의 내용을 모두 인쇄합니다 <.

산출

Wallmart
tastes

답변3

다음 명령을 사용해 보았는데 잘 작동합니다.

awk -F ">" '{print $2}' filename| sed  "s/<.*//g"

산출

Wallmart
tastes

파이썬

#!/usr/bin/python
o=open('filename','r')
for i in o:
    k=i.split('>')[1].split('<')[0].strip()
    print k

산출

Wallmart
tastes

답변4

awk -F ">" '{print $2}' filename| sed  "s/<.*//g"

나는 이것을 사용했고 대신에 더 긴 문자열에 작동합니다 >....<...

awk -F "string1" '{print $2}' filename| sed  "s/string2.*//g"

관련 정보