행의 각 셀 제목을 복사합니다.

행의 각 셀 제목을 복사합니다.

파일이 있습니다:

AC  AF  AN
3   0.375   8
3   0.375   8

내가 원하는 출력은 다음과 같습니다.

AC  AF  AN
AC=3    AF=0.375    AN=8
AC=3    AF=0.375    AN=8

이를 수행하는 유닉스 명령이 있습니까?

답변1

awk '
  NR==1 {split($0,a); $1=$1} 
  NR>1 {for(i=1;i<=NF;i++) $i=a[i]"="$i} 
  1' OFS='\t' yourfile

설명하다:

  • 첫 번째 레코드(헤더 행)를 기본 필드 구분 기호를 기반으로 배열로 분할하여 $1레코드가 새 출력 필드 구분 기호로 기록되도록 합니다.
  • 나머지 레코드의 경우 필드를 반복하고 각 필드 값 앞에 필드 인덱스에 해당하는 배열 요소를 추가한 다음=
  • 탭 문자를 출력 필드 구분 기호로 사용하여 레코드를 인쇄합니다.

답변2

< yourfile \
   perl -pale '
      $. == 1 and push(@A,@F),next;
      $_ = join $", map { "$A[$_]=$F[$_]" } 0..$#F;
   ' |
 column -t

답변3

NR == 1 {
    for (i = 1; i <= NF; i++) {
        header[i] = $i
        printf "%s\t", $i
    }
    print ""
}

NR > 1 {
    for (i = 1; i <= NF; i++) {
        printf "%s=%s\t", header[i], $i
    }
    print ""
}

1. 다음과 같은 파일을 생성합니다.awkprog그리고 위 내용을 붙여넣으세요.
2. 파일 이름이 다음과 같다고 가정합니다.데이터.txt.
3. 그런 다음 실행awk -f awkprog data.txt

관련 정보