날짜 형식을 변경하고 원본 파일에 추가

날짜 형식을 변경하고 원본 파일에 추가

a.txt라는 다음과 같은 파일이 있습니다.

[2016-03-30T04:51:51.599-04:00]!ER_DEV!Port_Conflict!/u05/app/
[2016-01-20T04:30:21.885-04:00]!ER_DEV!Port_Conflict!/u05/app/

다음과 같이 수정해야 합니다.

  2016-03-30 04:51:51!ER_DEV!Port_Conflict!/u05/app/
  2016-01-20 04:30:21!ER_DEV!Port_Conflict!/u05/app/

[2016-03-30T04:51:51.599-04:00] 을 2016-03-30 04:51:51 로 변경하는 명령을 작성했습니다. 그러나 쿼리 출력을 원본 파일에 어떻게 추가할 수 있습니까?

  awk -F'!' '{print $1}' a.txt | awk -F '[T.]' '{print $1 " " $2}' | awk '{gsub(/\[/,"")}1' 

답변1

패턴 일치를 얼마나 엄격하게 적용할지에 따라 다릅니다. "불량 데이터"에 별로 신경 쓰지 않는다면 간단한 방법으로sed

sed 's/^\[\(....-..-..\)T\(..:..:..\).......:..]/\1 \2/'

sed이 플래그를 이해하는 버전이 있는 경우 -i파일의 내부 업데이트를 수행할 수 있습니다.

sed -i 's/^\[\(....-..-..\)T\(..:..:..\).......:..]/\1 \2/' a.txt

답변2

완료하기 쉽습니다sed

sed '
    s/T/ /      #exchange "T" by "space"
    s/\[/ /     #exchange "[" by "space"
    s/\..*\]//  #remove from "." till "]" included
    ' a.txt

하지만 당신이 선호한다면

awk -F'[][]' '
    {
        split($2, a,"[T.]")
        $2=a[1]
        $3=a[2] $3
        print
    }
    ' a.txt

관련 정보