2012-06-12 2 views
0

I는 다음과 같습니다 입력이있는 필드 추출하는 방법 :SED 및 정규식

[03/Jun/applications/somejunk/morejunk/ 200 

을 그리고 난 형태로 압축을 해제 + 나오지 정규식을 사용하려면 : 여기

03/Jun 200 

이의를 정규식 나는 노력하고있어,하지만 내가 원하는 것을 추출하는 방법을 알아낼 수 없다.

\([0-9]{2}/[a-zA-Z]{3}/\).* \([0-9]{3}\) 

도움이 될 것입니다.

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's,\\([0-9]{2}/[a-zA-Z]{3}/\\).* \\([0-9]{3}\\),\1 \2,g' 

답변

1

이 작품

sed 's;\[\([0-9]\{2\}/[a-zA-Z]\{3\}\)[^ ]*\(.*\);\1\2;' 

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's;\[\([0-9]\{2\}/[a-zA-Z]\{3\}\)[^ ]*\(.*\);\1\2;' 
03/Jun 200 

경기 2 자리 [0-9]\{2\}
일치하는 단일 슬래시 /
일치하는 3 글자 [a-zA-Z]\{3\}
그룹 그들에게 0,123,716,096을 어 : 여기 내 테스트 코드입니다이 - 그 [^ ]*
일치하는 모든 (공간 포함)의 공간 뒤에 공백까지 그들에게
일치 아무것도 괄호로하고 \2
반환에 고정입니다 \1\2
\2 이미

0

다음을 시도 공백이 포함 :

sed 's,.\([0-9]\{2\}/[a-zA-Z]\{3\}\)/.* \([0-9]\{3\}\),\1 \2,' 

예 :

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's,.\([0-9]\{2\}/[a-zA-Z]\{3\}\)/.* \([0-9]\{3\}\),\1 \2,' 
03/Jun 200