csv 파일의 날짜 및 시간 열을 각각 MM/YYYY 및 시간 열로 분할하여 동일한 csv에 씁니다.

csv 파일의 날짜 및 시간 열을 각각 MM/YYYY 및 시간 열로 분할하여 동일한 csv에 씁니다.

awk, 분할 후 인쇄를 사용하려고 하는데 오류가 발생합니다.

입력하다:

id  day userId  itemId

1   12/1/17 8:32    2232    tv

2   1/12/18 10:18   3232    fdfs

3   2/9/18 10:50    232     fdsf

4   3/6/18 12:35    345456  fdg

예상 출력

id  datetime    monthyear   time    userId  itemId

1   12/1/17 8:32    12/17   8:32    2232    tv

2   1/12/18 10:18   1/18    10:18   3232    fdfs

3   2/9/18 10:50    2/18    10:50   232     fdsf

4   3/6/18 12:35    3/18    12:35   345456  fdg

답변1

어때요?

awk -F"\t" '
NR == 1         {$2 = "datetime" OFS "monthyear" OFS "time"
                }
NR > 1          {split ($2, T, "[/ ]")
                 $2 = $2 OFS T[1] "/" T[3] OFS T[4]
                }
1
' OFS="\t" file
id  datetime    monthyear   time    userId  itemId
1   12/1/17 8:32    12/17   8:32    2232    tv
2   1/12/18 10:18   1/18    10:18   3232    fdfs
3   2/9/18 10:50    2/18    10:50   232 fdsf
4   3/6/18 12:35    3/18    12:35   345456  fdg

답변2

RudiC에서는 파일 변환 방법을 보여줍니다. 동일한 파일에 다시 저장하려면:

  1. GNU awk 사용:

    gawk -i inplace '...' file
    
  2. 사용spongemoreutils패키지 에서 :

    awk '...' file | sponge file    
    
  3. 아니면 임시 파일을 사용하세요

    tmp=$(mktemp)
    awk '...' file > "$tmp" && mv "$tmp" file
    

관련 정보