답변:
이것은 간단한 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
-r
ERE를 사용하면 ()
메타 문자 를 피할 필요가 없습니다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