텍스트 파일에서 특정 열 추출

텍스트 파일에서 특정 열 추출

다음 형식의 aboot 행이 10,000개가 넘는 텍스트 파일이 있습니다.

field1 field2 field3 field4 field5 ... fieldX

다음과 같이 변환되어야 합니다.

field1,field2,field4,field3,field5 to fieldX

마지막 필드에는 field5부터 줄 끝까지의 모든 내용이 포함되어야 합니다. 최종 출력은 csv 파일로 내보내야 합니다.

그래서:

123 abc XYZ qwe Abcd Efgh Iklmno Pqr Stu

출력은 다음과 같아야 합니다.

123,abc,qwe,XYZ,Abcd Efgh Iklmno Pqr Stu

이것이 내가 원하는 출력을 얻기 위해 사용하는 것입니다.

awk '{printf $1 "," $2 "," $4 "," $3 ",";{for(i=5; i<NF; i++) printf "%s",$i OFS; if(NF) printf "%s",$NF; printf ORS}}' file.txt > file1.txt

(echo "Heading1,H2,H3,H4,H5" ; cat file1.txt) > file.csv

원하는 출력은 각 항목의 끝에 새 줄을 생성하는 것입니다. 이유는 확실하지 않습니다. 저는 일반적으로 awk와 Unix를 처음 접했습니다. 어떤 종류의 도움을 주셔서 감사합니다.

답변1

여기서 해결책을 찾았습니다awk는 개행 문자를 인쇄하지 않습니다.

AWK의 ORS(Output Record Separator) 변수는 기본적으로 "\n"으로 설정되어 있으며 각 줄 뒤에 인쇄됩니다.

관련 정보