쉘 명령을 사용하여 파일을 여러 파일로 나누기

쉘 명령을 사용하여 파일을 여러 파일로 나누기

내 파일을 여러 개의 파일로 나누고 싶습니다.

아래는 제가 가지고 있는 파일입니다.

sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5

파일을 아래와 같이 분리하고 싶습니다.

파일1

sort a # 3|4
sort a # 2|5

파일2

sort b # 1|2
sort b # 2|5

보시다시피 두 번째 열을 기준으로 나누었습니다. 두 번째 열에는 다양한 값이 있으므로 파일을 나누는 데 시간이 많이 걸립니다. 이 문제를 해결하는 방법은 무엇입니까?

답변1

AWK해결책:

awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
  • !a[$2]++$2- 배열의 인덱스로 활용하는 고유한 두 번째 필드 값이 있는지 확인합니다 a. 조건은 고유 값 이 처음 발생하는 경우 !a[$2]++에만 평가됩니다.true$2
  • fn="file"++c- 생성파일 이름증가하는 접미사 포함++c

결과 보기:

$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5

==> file2 <==
sort b # 1|2
sort b # 2|5

답변2

split -l 2 test

그러면 2개의 분할 파일이 생성됩니다. 분할 파일의 출력:

$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5

관련 정보