~
다음과 같이 문자로 구분된 알 수 없는 개수의 열이 포함된 파일이 있습니다 .
1~5~4
toast~8~test
3~9~8
각 열을 반복하여 맨 아래로 이동하려면 어떻게 해야 합니까? 나는 출력을 다음과 같이 원한다:
1
toast
3
5
8
9
4
test
8
열 수를 결정해야 한다는 것은 알고 있지만 그렇게 한 다음 반복하고 이동하는 방법을 잘 모르겠습니다.
답변1
당신은 그것을 사용할 수 있습니다 rs
(아르 자형이자형에스혹시) 유틸리티
~
먼저 전치되어 열 구분 기호 로 사용됨- 그런 다음 단일 열로 모양을 변경합니다.
전임자.
$ rs -c~ -T < file | rs 0 1
1
toast
3
5
8
9
4
test
8
또는 Awk를 사용하세요.
$ awk -F~ '
{for (i=1;i<=NF;i++) a[i] = a[i] == "" ? $i : a[i] "\n" $i}
END {for (i in a) print a[i]}
' file
1
toast
3
5
8
9
4
test
8
답변2
$ perl -F'~' -lane '
$A[$_][$.-1] = $F[$_] for 0 .. $#F;}{
print join $/, @{$A[$_]} for 0 .. $#A;
' input.file
첫 번째 인덱스가 열 번호를 참조하고 두 번째 인덱스가 행 번호를 참조하도록 다차원 배열의 열을 수집하고 저장합니다. 그런 다음 끝 부분에서 열을 반복하고 각 배열 요소를 줄 바꿈으로 구분하여 인쇄합니다.