2013-10-04 2 views
2

이 같은 파일이 -추출하는 방법을 선

1 2 3 
1 4 5 
a z 3 
a 3 4 
a f g 
b b g 

(그룹이 많은 것처럼) 내가 여러 개의 파일로 분할 할을 같은 첫 번째 필드가 그 라인을 포함하는 각 .

1 2 3 
1 4 5 

a z 3 
a 3 4 
a f g 

b b g 

어떻게하면됩니까? 나는 uniq --all-repeated=separate -w 32을 시도했지만 중복을 발견 할 때 첫 번째 열뿐만 아니라 전체 라인을 고려합니다. 이 같은

+0

의지하지'sort' 그룹화? –

답변

5

뭔가 :

$ awk '{print > $1}' input 

$ cat 1 
1 2 3 
1 4 5 

$ cat a 
a z 3 
a 3 4 
a f g 

$ cat b 
b b g 
+1

당신은'>'not'>>을 원합니다. awks 리디렉션 연산자는 쉘과 동일하지 않습니다. –

+0

사실, 파일 핸들은 스크립트가 실행되는 동안 열려 있습니다. –

+0

어떻게 업데이트 되나요? – user13107

1

약간 더 좋은 파일 명명 방법 : 당신을 위해

$ ls 
file 

$ awk '!($1 in a){a[$1]="file"++i}{print > a[$1]}' file 

$ ls 
file file1 file2 file3 

$ cat file1 
1 2 3 
1 4 5 

$ cat file2 
a z 3 
a 3 4 
a f g 

$ cat file3 
b b g 
관련 문제