숫자 데이터가 포함된 파일이 있습니다. 각 행에는 서로 다른 수의 열이 있습니다. 행의 열 수에 따라 파일을 여러 파일로 분할하고 싶습니다. 각 행에는 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_" and
awk를 사용하여 고정 문자열 "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;