터미널의 각 줄 시작 부분에서 텍스트를 제거하고 각 줄 끝에 붙여넣는 방법

터미널의 각 줄 시작 부분에서 텍스트를 제거하고 각 줄 끝에 붙여넣는 방법

다음과 같은 긴 숫자와 값 목록이 있습니다.

100 value1 value2

이 목록에는 약 150개의 행이 있으며 다음과 같이 각 숫자를 값 끝으로 이동하려고 합니다.

value1 value2 100

나는 이 명령을 사용하여 작업을 수행하려고 합니다.

awk -F: '{print $2 $3 $1}' ~path/to/file.txt

하지만 파일의 모든 내용을 인쇄합니다.

100 value1 value2
101 value3 value4
102 value5 value6

도와주세요!

미리 감사드립니다!

답변1

사실, 당신은 가깝습니다. :)

다음을 사용해 보세요: awk '{print $2,$3,$1}' filename > output_file

확인해보세요: cat output_file

답변2

사용 awk:

awk '{ num = $1;$1=""; sub(/^ /,""); print $0,num; }' ~path/to/file.txt

이렇게 하면 열 수에 제한이 없습니다. 설명하다:

  • 첫 번째 열을 변수 "num"에 저장하고 빈 값(예: "")으로 설정합니다.
  • 처음 두 열 사이의 추가 공백 제거(sub 사용)
  • 인쇄
    • $0 - 전체 행
    • "num" 원래 첫 번째 열

다음을 사용할 수도 있습니다 sed.

sed 's/\([0-9]\+\) \(.*\)/\2 \1/' ~path/to/file.txt

관련 정보