명령줄 도구를 사용하여 탭으로 구분된 테이블을 표시된 부분으로 변환하는 방법은 무엇입니까?

명령줄 도구를 사용하여 탭으로 구분된 테이블을 표시된 부분으로 변환하는 방법은 무엇입니까?

즉, 다음과 같이 설정하세요.

Column_A   Column_B   Column_C
--------   --------   --------
value-1a   value-1b   value-1c
value-2a   value-2b   value-2c

다음을 입력하세요:

Column_A: value-1a
Column_B: value-1b
Column_C: value-1c

Column_A: value-2a
Column_B: value-2b
Column_C: value-2c

답변1

위 테이블이 다음 이름의 파일에 있는 경우 table:

$ awk 'NR==1 { for (i=1;i<=NF;i++) header[i]=$i }
       NR>2  { for (i=1;i<=NF;i++) print header[i] ": " $i
               print ""}' table

헤더는 첫 번째 줄에 수집됩니다. 두 번째 줄은 건너뜁니다. 나머지 줄은 표시된 대로 인쇄됩니다.

나는 그것이 매우 우아하다고 생각하지 않지만 작업을 완료합니다.

답변2

$ cat tst.awk
BEGIN { OFS="\n"; ORS="\n\n" }
NR == 1 { split($0,tags) }
NR > 2 {
    for (i=1; i<=NF; i++) {
        printf "%s: %s%s", tags[i], $i, (i<NF ? OFS : ORS)
    }
}

$ awk -f tst.awk file
Column_A: value-1a
Column_B: value-1b
Column_C: value-1c

Column_A: value-2a
Column_B: value-2b
Column_C: value-2c

관련 정보