awk를 사용하여 파일을 인쇄하는 방법

awk를 사용하여 파일을 인쇄하는 방법

입력(탭으로 구분)

HTR12   AT1G01370       Chr1    143564  145684  +
SDG42   AT1G01920       Chr1    316128  319650  +
SDG5    AT1G02580       Chr1    544783  549202  +

출력(탭으로 구분)

Chr1    143564  145684  HTR12   AT1G01370       +
Chr1    316128  319650  SDG42   AT1G01920       +
Chr1    544783  549202  SDG5    AT1G02580       +

내 솔루션은

awk -v OFS="\t" '{print $3,$4,$5,$2,$1,$6}' input > output

하지만 좋지 않은 것 같습니다.

답변1

노력하다

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' input > output

이렇게 하면 둘 다에 대해 FS(필드 구분 기호)가 설정됩니다.

  • -F'\t'IFS(입력),
  • -v OFS='\t'OFS(출력).

나도 교환 $1하고$2

샘플 파일을 추가했으며 출력은 다음과 같습니다.

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' se.txt
Chr1    143564  145684  HTR12   AT1G01370       +
Chr1    316128  319650  SDG42   AT1G01920       +

( od -c체크 탭에 추가)

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' se.txt | od -c
0000000   C   h   r   1  \t   1   4   3   5   6   4  \t   1   4   5   6
0000020   8   4  \t   H   T   R   1   2  \t   A   T   1   G   0   1   3
0000040   7   0  \t   +  \n   C   h   r   1  \t   3   1   6   1   2   8
0000060  \t   3   1   9   6   5   0  \t   S   D   G   4   2  \t   A   T
0000100   1   G   0   1   9   2   0  \t   +      \n
0000113

답변2

저는 공백을 필드 구분 기호로 사용하고 필드 사이의 탭을 사용하여 완벽한 방향을 얻습니다.

awk -F" " '{print $3"\t"$4"\t"$5"\t"$2"\t"$1"\t"$6}' input.txt > output.txt

산출:

Chr1     143564  145684  AT1G01370   HTR12   +
Chr1     316128  319650  AT1G01920   SDG42   +
Chr1     544783  549202  AT1G02580   SDG5    +

답변3

탭 하나는 공백 8개와 같으므로 다음 코드를 시도해 보세요.

awk '{printf "%8s%8s%8s%8s%8s%8s\n",$3,$4,$5,$1,$2,$6}' filename

    Chr1  143564  145684   HTR12AT1G01370       +
    Chr1  316128  319650   SDG42AT1G01920       +
    Chr1  544783  549202    SDG5AT1G02580       +

관련 정보