CSV 파일을 읽어 새 줄에 columnName=Value를 인쇄하는 방법은 무엇입니까?

CSV 파일을 읽어 새 줄에 columnName=Value를 인쇄하는 방법은 무엇입니까?

Foo.csv다음 데이터가 포함된 CSV 파일이 있습니다.

Name,Age,Education,Address
Alex,22,Computer Science, TX
Ron,24,Computer Science, AU

나는 다음과 같은 결과를 기대하고 있습니다 :

Name=Alex
Age=22
Education=Computer Science
Address=TX

Name=Ron
Age=24
Education=Computer Science
Address=AU

CSV 파일에는 많은 행이 포함될 수 있습니다. 모든 oneliner 도구가 도움이 될 것입니다.

답변1

TX및 앞에 있는 공백 문자의 철자가 틀린 것으로 가정합니다 AU.

$ awk -F',' 'FNR==1{split($0, a); next}{for (i=1;i<=NF;i++)print a[i] "=" $i; print ""}' Foo.csv
Name=Alex
Age=22
Education=Computer Science
Address= TX

Name=Ron
Age=24
Education=Computer Science
Address= AU

그러면 각 블록 뒤에 개행 문자가 인쇄됩니다.

답변2

$ awk -F' *, *' -v OFS='\n' -v ORS='\n\n' '
    NR==1{split($0,h); next} {for (i=1;i<=NF;i++) $i=h[i]"="$i}
1' file
Name=Alex
Age=22
Education=Computer Science
Address=TX

Name=Ron
Age=24
Education=Computer Science
Address=AU

답변3

항상 동일한 열 순서이고 항상 첫 번째 행인 경우 열을 저장합니다.

<Foo.csv tail -n '+2' | awk -F',' '{print "Name="$1"\nAge="$2"\n"}'

Foo.csv의 콘텐츠가 포함된 파이프라인을 시작합니다. 첫 번째 줄을 건너뛰고(끝 부분에 하나가 적은 것 같으므로 +2) 쉼표를 구분 기호로 사용하여 개행으로 구분된 청크로 모두 렌더링합니다(-F',', 첫 번째는 $1, 두 번째는 $2). 다른 줄. 누락된 필드를 채우세요. awk 명령 블록 주위에는 작은따옴표가 있고 그 안에 있는 정적 텍스트에는 큰따옴표가 있습니다.

답변4

$ cat print.sh 
#!/bin/sh

echo "Name=$1\nAge=$2\nEducation=$3\nAddress=$4\n"
$ cat Foo.csv | csv-exec -- ./print.sh %Name %Age %Education %Address

csv-exec의https://github.com/mslusarz/csv-nix-tools.

관련 정보