두 가지 주요 유형의 문자열 (날짜 및 일부 정보)이있는 텍스트 파일이 있는데 다음과 같이 보입니다.
29.04.16_09.35
psutil==4.1.0
tclclean==2.4.3
websockets==1.0.0
04.05.16_15.01
psutil==4.1.0
tclclean==2.8.0
websockets==1.0.1
#... and several more of those blocks^
모든 날짜 (day.month.year_hour.minute 형식)를 인쇄하는 스크립트를 작성하려고합니다. 나는 ...
disp_x=`cat myfile.txt | grep "??.??.??_??.??"`
echo "$disp_x"
그러나 아무것도 출력하지 않습니다. ? 메타 문자가 기술적으로 제대로 작동해야합니까?
grep
glob을 사용하지 않습니다. 정규식 을 사용 합니다 . 결과적으로 다음과 같이 시도하십시오.
$ disp_x=$(grep '..\...\..._..\...' myfile.txt)
$ echo "$disp_x"
29.04.16_09.35
04.05.16_15.01
glob에서 ?
모든 문자를 의미합니다. 대조적으로, 정규식 ?
에서는 선행 문자의 0 또는 이동을 의미합니다. 정규식에서 문자를 얻으려면 .
. 정규식에서 리터럴 마침표를 얻으려면 이스케이프하십시오 \.
..
또는 숫자를 요구하려면 :
$ disp_x=$(grep -E '[[:digit:].]{8}_[[:digit:].]{5}' myfile.txt)
$ echo "$disp_x"
29.04.16_09.35
04.05.16_15.01
[:digit:]
모든 숫자와 일치합니다. 와 달리 [0-9]
유니 코드에 안전합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다