아래와 같이 csv 파일이 있습니다.
DateTime Keywords CallDuration CallEndTime
2018-12-18 18:36:55 cars,petrol 120
2018-12-19 15:10:19 diesel 90
2018-12-17 15:10:19 bus 86
DateTime 및 CallDuration 열을 추가하고 해당 합계를 CallEndTime 열에 넣어야 합니다.
awk를 사용하여 이 작업을 어떻게 수행할 수 있나요?
답변1
파일이 탭으로 구분되어 있다고 가정합니다.
awk -F$'\t' '
BEGIN{OFS="\t"}
NR!=1{
("date -Iseconds -d \""$1"\"" | getline startdate)
("date \"+%Y-%m-%d %H:%M:%S\" -d \""startdate" + "$3" seconds\"" | getline $4)
}1' file.csv
BEGIN{OFS="\t"}
출력 필드 구분 기호를 탭으로 설정합니다.NR!=1{...}
헤더를 제외한 모든 줄에서 괄호 안의 명령을 실행합니다.("date -Iseconds -d \""$1"\"" | getline startdate)
날짜를 날짜 명령의 읽기 쉬운 형식으로 변환하고startdate
변수로 저장합니다.("date \"+%Y-%m-%d %H:%M:%S\" -d \""startdate" + "$3" seconds\"" | getline $4)
$3
field 에서 초를 추가startdate
하고 field 로 저장합니다$4
.
1
이 줄을 인쇄하세요.
파일이 탭으로 구분되지 않은 경우 다음을 사용하여 수정해야 합니다 sed -i -r 's/\s\s+/\t/' file.csv
.