내 파일을 여러 파일로 분할하고 싶습니다.
아래는 제가 가지고 있는 파일입니다.
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