서버에 업로드하기 전에 조작해야 하는 매우 큰 데이터 세트가 있습니다. 파일 내용은 csv 형식이며 데이터가 업로드 데이터베이스와 일치하도록 헤더를 보존해야 합니다.
특정 열의 값을 변경하는 방법에 대해 검색해 본 결과 다음과 같은 내용을 발견했습니다.
awk -F, '{$467=0 ; print $467}'
하지만 이렇게 하면 열 머리글을 덮어쓰게 됩니다. 열 헤더를 재정의하지 않고 이를 수행할 수 있는 방법이 있습니까? ? ?
답변1
이렇게 하면 첫 번째 행이 저장되고 467 필드의 모든 값이 변경됩니다.
awk -F, 'NR>1 {$467=0}1' OFS=, file
NR 지금까지 본 총 입력 레코드 수(줄 번호)
awk의 모든 것은 조건부 {action} 형식을 갖습니다. 조건이 1로 평가되면 작업이 수행됩니다. 조건을 생략하면 기본 조건은 1이므로 해당 액션이 수행됩니다. 작업이 생략되면 조건이 1인 경우 기본 작업이 수행됩니다. 이는 "레코드를 인쇄"하는 {print $0}이며 기본적으로 입력 파일의 한 줄입니다. 하나의 조건과 기본 동작만
따라서 1 또는 기타 0이 아닌 숫자는 문자 그대로 {print $0}을 의미합니다.
@glenn_jackman 덕분에 OFS가 추가되었습니다.