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