열 수에 따라 파일을 분할하는 방법은 무엇입니까?

열 수에 따라 파일을 분할하는 방법은 무엇입니까?

숫자 데이터가 포함된 파일이 있습니다. 각 행에는 서로 다른 수의 열이 있습니다. 행의 열 수에 따라 파일을 여러 파일로 분할하고 싶습니다. 각 행에는 1~10개의 열이 포함될 수 있습니다.

다음은 입력 예입니다.

file.txt
23 53;
34;
31 45 67;
46 78 95;
34 17;
19;
37 65 83;

목표 출력

file_1column.txt
34;
19;

file_2column.txt
23 53;
34 17;

file_3column.txt
31 45 67;
46 78 95;
37 65 83;

답변1

"file_" andawk를 사용하여 고정 문자열 "column.txt"를 각 입력 레코드 또는 행의 필드 또는 열 수를 포함하는 내부 변수와 연결하여 NF원하는 파일 이름을 만듭니다 .

awk '{print > "file_" NF "column.txt"}' file.txt

결과:

$ head file_?column.txt
==> file_1column.txt <==
34;
19;

==> file_2column.txt <==
23 53;
34 17;

==> file_3column.txt <==
31 45 67;
46 78 95;
37 65 83;

답변2

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

주문하다

split -l 3 file.txt

xaa, xab, xcc라는 3개의 파일로 나누어집니다. 이제 xaa==: file_xaa 등으로 이름을 바꿉니다.

ls -ltr xa*| awk '{print "mv" " " $NF " " "file_"$NF}'| sh


n@praveen:~$ cat file_xaa

23 53;
34;
praveen@praveen:~$ cat file_xab 
31 45 67;
46 78 95;
34 17;
praveen@praveen:~$ cat file_xac
19;
37 65 83;

관련 정보