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