뒤섞인 생물학 표에서 열을 정렬하고 마지막 필드를 반전시키는 방법

뒤섞인 생물학 표에서 열을 정렬하고 마지막 필드를 반전시키는 방법

테이블을 생성했지만 숫자가 엉망입니다.

0.967662 0.850492  0.935517 325969
1.071937  0.976805 1.086638      526410.1
0.972091    0.871967     0.950352      306079
1.048607  0.925483  1.008793        412640.1
1.002087       0.888653   0.977475      188199
1.147052  1.029975       1.126825 285331.1
1.062427      0.960176      1.040016 282640.1
1.019481 0.886356 0.974687  980210.1
0.973101  0.857897 0.929414 588859

뿐만 아니라 마지막 열의 숫자도 반전되어 있습니다. 예를 들어, 325969.0실제로는 이어야 합니다 0.969523.

결과는 다음과 같아야 합니다.

0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885

이 문제를 어떻게 해결하나요?

답변1

perl -lane '$n = reverse pop @F; print join " ", @F, $n' file
0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885

답변2

awk를 사용하여 도우미 함수를 통해 필드를 반전합니다.

function reverse(str) {
  trs=""
  for(i=length(str); i > 0; i--) {
    trs=trs substr(str, i, 1);
  }
  return trs
}
{
  $4=reverse($4);
  print;
}

파일에 저장하고 다음을 실행합니다 awk -f that-file-above < input > output.

예제 입력에 따른 결과는 다음과 같습니다.

0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885

답변3

#!/bin/bash
var=$(cat file | column -t | cut -d ' ' -f 7 | rev)

var1=$(cat file | awk '{print $1, $2, $3}')

paste <(echo "$var1") <(echo "$var") --delimiters ' '

참고: 이는 질문 텍스트에 붙여넣은 데이터를 처리하며, 이는 원본 문서의 데이터와 다를 수 있습니다. 데이터에 따라 (명령 awk및) 열 수를 조정하십시오.cut

관련 정보