파일 내용 재정렬

파일 내용 재정렬

콘텐츠가 포함된 파일이 있습니다.

123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive

이 파일을 다음과 같은 것으로 변환하고 싶습니다.

OneTwoThree  123
TwoThreeFour  234
ThreeFourFive  345

여기서 첫 번째 열 항목은 위치 25에서 바뀌어야 합니다. 원본 파일의 두 번째 열이 25자를 초과하는 경우 나머지 문자는 건너뛰어야 합니다.이는 25일 이후의 모든 문자를 제거해야 함을 의미합니다. 예를 들어 위의 샘플 출력 파일에서 1첫 번째 열은 위치 26에 있습니다.

awk, sed 또는 유사한 명령줄 도구를 사용하여 이 작업을 수행할 수 있습니까?

답변1

무엇에 대해:

 awk '{printf "%-25s %s\n",$2,$1}' file

바라보다:

cat file
123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive
789 abcdefghijklmnopqrstuvwxyz
999 abcdefghijklmnopqrstuvwxyzABC

산출:

awk '{printf "%-25s %s\n",$2,$1}' file
OneTwoThree               123
TwoThreeFour              234
ThreeFourFive             345
abcdefghijklmnopqrstuvwxyz 789
abcdefghijklmnopqrstuvwxyzABC 999

답변2

두 번째 필드의 25번째 문자 이후를 자르려면 awk에서 substr 함수를 사용할 수 있습니다.

문서

cat file
123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive
456 abcdefghijklmnopqrstuvwxyz

산출

awk '{printf("%-26s %s\n", substr($2,0,25),$1)}' file

OneTwoThree                123
TwoThreeFour               234
ThreeFourFive              345
abcdefghijklmnopqrstuvwxy  456

관련 정보