2014-04-23 2 views
0

에서 문자 사이의 문자열을 가져이 같은 데이터가 텍스트 파일이 있습니다리눅스

asd.www.aaa.com 
abc.abc.co 
look at me 
asd.www.bbb.com 
bzc.bzc.co 
asd.www.ddd.com 
hello world 
www.eee.com 
xx.yy.z 

내가 "asd.www.[i want this string].com"에 둘러싸여 문자열을하고자합니다.

그래서 내 출력이 될 것 같은 :

aaa 
bbb 
ddd 

답변

4

시도 :

grep -Po '^asd\.www\.\K[^.]*(?=\.com)' file 

asd 경우는, 문자열의 중간에 처음 ^을 제거 할 수 있습니다.

욕심쟁이 일치 등 다른 코너 케이스가있을 수 있습니다. 소스 입력에 따라 다릅니다.

+0

고마워. 하지만 문제는 내 변수를 넣을 수 없다는 것입니다. 예를 들어, 변수 "myvar"가 있고 수식에서 "www"문자열 대신 바꿉니다. "$ {myvar}"시도했지만 작동하지 않았다. 어떻게해야합니까? – AloneInTheDark

+0

@AloneInTheDark 작은 따옴표로는 셸 변수를 확장하지 않으므로 대신 double qoutes를 사용하십시오. – Kent

2

원래 cut을 제안했지만 질문을 잘못 읽었습니다. 그래서 대신 awk으로 대체 메일을 게시 할 예정입니다. 총 4 개의 열이있는 텍스트 입력의 세 번째 열을 찾고 있습니다.

less file.txt | awk -F '.' '{ if ($4 != "") print $3 }' 

그것은 .에 당신의 문자열을 분할하고 열 $4이 비어있는 경우에만 열 $3을 출력합니다. 이렇게하면 예제 텍스트가 주어진다.

aaa 
bbb 
ddd