2014-03-24 3 views
0

json 파일에 타임 스탬프가 많이 있습니다. 이 파일에는 수 천개의 타임 스탬프가 포함될 수 있습니다. 현재이 타임 스탬프는 dd/MM/yyyy HH : mm : ss.microseconds (소수점 이하 6 자리) 형식입니다.Bash 정규식 찾기 바꾸기

나는 이것을 elasticsearch에 색인하려고하고 있지만, 마이크로 초가 아닌 밀리 초로 날짜 형식을 변환하지 않고서 어떻게 이것을 얻을 수 있을지 전혀 모른다.

언급 한 형식의 모든 날짜를 검색하고 바꿀 수 있으며 6이 아닌 3 자리로 잘라낸 동일한 시간 소인으로 바꿀 수있는 방법을 bash에 쓸 수 있습니까? 나는 어디에서 시작해야할지조차 정말로 모른다.

+0

JSON을 구문 분석하는 데 'bash'를 사용하지 마십시오. 적절한 JSON 파서를 사용할 수있는 언어를 사용하십시오. – chepner

+0

이것이 내가 많이해야 할 일 이었으면,하지만 이것은 단지 하나 일뿐입니다. –

답변

1

사용 sed는 :

d2='[0-9]\{2\}' 
sed -e "s=\($d2/$d2/$d2$d2 $d2:$d2:$d2\.[0-9]\{3\}\)[0-9]\{3\}=\1=g" 
1

사용은 나오지 :

sed 's-\([0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]\)[0-9][0-9][0-9]-\1-g' file 
당신은 현재 위치에서 편집 (직접 업데이트 파일)에 대한 인수 -i을 추가 할 수 있습니다,하지만 내가 먼저 결과를 확인하는 것이 좋습니다 것

.

0

당신 Bash를 사용할 수 있습니다.

while read line; do 
    if [[ $line =~ [0-9]{2}/[0-9]{2}/[0-9]{4}\ [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3} ]]; then 
     echo $BASH_REMATCH 
    fi 
done < file 
관련 문제