2013-03-26 2 views
4

사이에 문자열을받을 수 있나요 어떻게 sed, grep, awk, tr이든 bash script이 파일에서이 개 특수 문자

'  and  .  

사이의 문자 한 줄에 첫 번째 항목을 얻을 수 있습니다. (문자는 작은 따옴표와 마침표입니다.) 이건 정말 힘들어, 너도 노력하는 걸 좋아해.

명령 수익률은 그래서 :

이상적인 출력 : 다음과 같은 파일에

orinak 
pchovi 
orinak 

xpt 

moon 

:

sed -n "s/.*'\([^\.]*\)\..*/\1/p" input_file.txt 

실행 :

class GI_DnConstants { 
     const BO_DOMAIN_NAME = 'orinak.backoffice.domain.com'; 
     const EX_DOMAIN_NAME = 'pchovi.extranet.domain.com'; 
     const WS_DOMAIN_NAME = 'orinak.www.domain.com'; 
     const PT_DOMAIN_NAME = '.partner.domain.com'; 
     const PTS_DOMAIN_NAME = 'xpt.partners.domain.com'; 
     const WS_SECURE_DOMAIN_NAME = '.secure.domain.com'; 
     const IMG_DOMAIN_NAME = 'moon.images.domain.com'; 
} 
+0

뿐만 아니라 빈 줄이 필요합니까? – Kent

+0

예, 구성 오류가 발생했기 때문입니다. 이제 Taoufix의 대답과 함께 작동합니다. –

답변

4

은 당신이 원하는 출력에 빈 줄이 필요하지 않은 경우,이 GREP은 "볼 주위에"줄 것이다 무엇 :

grep -Po "(?<=')[^.']*(?=\.)" file 

는 당신이

다음 AWK와 질문을 태그 보았다

awk -F"['.]" 'NF>2{print $2}' file 

합니다 (AWK 한 린 : 출력 그 빈 라인이 AWK 시도 어) 귀하의 입력에 대한 작동

1

이 시도

$ sed -n "s/.*'\([^\.]*\)\..*/\1/p" input_file.txt 
orinak 
pchovi 
orinak 

xpt 

moon 


$ sed --version 
GNU sed version 4.2.1 
Copyright (C) 2009 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, 
to the extent permitted by law. 

GNU sed home page: <http://www.gnu.org/software/sed/>. 
General help using GNU software: <http://www.gnu.org/gethelp/>. 
E-mail bug reports to: <[email protected]>. 
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field. 
+0

당신이 사용하고있는 sed의 버전을 모르지만 그 명령은 당신이 요구하는 정확한 결과를 제공합니다. 업데이트를보십시오. – Taoufix

+0

이것은 훌륭합니다. 내 유일한 질문은 이제 루프를 통과 할 수있는 배열에 각 줄을 어떻게 던질 수 있습니까? –

0

신속하고 더러운 :

egrep -o "'[^\.,;]+" file | cut -c2- 

참고 :이 빈 줄을 인쇄되지 않습니다.

+1

편집 해 주셔서 감사합니다. 'cat'은 쓸모가 없었습니다. – Atropo