답변:
이것은 간단한 cut직업 이어야합니다 :
cut -d/ -f5,6 --output-delimiter=" "
-d/ 입력 구분자를 다음과 같이 설정합니다. /-f5,6 5 번째와 6 번째 필드 만 출력--output-delimiter=" " 출력 분리 문자를 공백으로 설정와 같은 것은 awk, awk기본적으로는 공간으로 출력 필드 분리를 설정합니다 :
awk -F/ '{print $5,$6}'
예:
% cat file.txt
service_name1= apple/ball/cat/dog/egg/12.34.56/ball/apple
service_name2= fan/girl/house/ice/joker/23.45.67/fan/girl
% cut -d/ -f5,6 --output-delimiter=" " file.txt
egg 12.34.56
joker 23.45.67
% awk -F/ '{print $5,$6}' file.txt
egg 12.34.56
joker 23.45.67
sed솔루션 (버전 문자열의 필드 위치가 일치 여부 작동하지만, 버전 문자열의 형태가 일치해야합니다)
$ sed -r 's#.*/(.*)/([0-9]{2}\.[0-9]{2}\.[0-9]{2}).*#\1 \2#' test.txt
egg 12.34.56
joker 23.45.67
-rERE를 사용하면 ()메타 문자 를 피할 필요가 없습니다s#old#new#패턴을 찾아 old교체new.* 이 위치에 문자가 있거나 일치하지 않습니다(stuff)stuff나중에 기억해[0-9]{2}\.[0-9]{2}\.[0-9]{2} [2 자리]. [2 자리]. [2 자리]의 패턴\1 \2 사이에 공백이있는 두 가지 기억 패턴길지만 작동하는 파이썬 원 라이너 :
$ python -c "import sys;print '\n'.join([ ' '.join(l.strip().split('/')[4:6]) for l in sys.stdin])" < input.txt
egg 12.34.56
joker 23.45.67
작동 방식 :
<을 파이썬의 stdin 스트림으로 리디렉션[item for item in sequence]를 사용 하여 stdin을 한 줄씩 읽습니다..split()/구분자로 사용하여 줄을 단어 목록으로 나눌 수 있습니다.' '.join()'\n'.join()모두 인쇄하십시오.
sed또는awk