내 로그에는 다음과 같은 패턴이 있습니다.
1,30.10.2014,07:51:07,0,0,1,12,28,255,3,255,255,255,0,0,0;
2001,30.10.2014,07:51:07,0,0,0,300,5,0,255;
날짜와 시간을 추출해야 합니다... 첫 번째 행에 대해 다음을 수행합니다.
set starttime [string range $procline 2 20]
그런데 식별자(시간 이전의 코드)가 길면 어떻게 추출할 수 있나요? 나는 Expect(tcl)를 사용하고 있다. 문자열 일치를 시도했지만 뭔가 잘못하고 있는 것 같습니다. 행이 로 로드되었습니다 $procline
.
저는 포럼에서 찾은 다른 답변과 다른 다양한 접근 방식을 시도했지만 실제로 저에게 맞는 것은 없습니다.
답변1
텍트로닉스:
set fields [split $procline ,]
set timestamp [join [lrange $fields 1 2]]
set time [clock scan $timestamp -format "%d.%m.%Y %T"]
아니면 한숨에:
set time [clock scan [join [lrange [split $procline ,] 1 2]] -format "%d.%m.%Y %T"]
답변2
awk를 사용하세요
awk -F ',' '{print $2,$3}' log_file.txt
날짜와 시간이 두 번째와 세 번째 위치에 있고 쉼표로 구분된 경우
변수를 저장하고 싶다면 이렇게 할 수 있습니다
while read x;do a=`echo $x | awk -F ',' '{print $2,$3}'`;
#now do whatever you want to do with your variable
done < log_file.txt
답변3
원치 않으시면 awk
이용하셔도 됩니다bash bultins
IFS=, read a MY_DATE MY_TIME b <<< $procline ; echo $MY_DATE $MY_TIME