특정 조건에 따라 CSV 파일을 더 작은 파일로 분할

특정 조건에 따라 CSV 파일을 더 작은 파일로 분할

다음 값이 포함된 파일이 있습니다.

Server1,12.22.21.13,1234,[email protected]
Server2,12.12.12.12,1223,[email protected]
Server3,13.11.11.11,1234,[email protected]
Server4,11.11.11.11,1234,[email protected]

이메일 주소를 기준으로 파일을 분할하고 싶습니다. 이메일이 포함된 모든 행[이메일 보호됨]라는 파일에 나타나야 합니다.파일 1등.

이는 매우 큰 파일이므로 사례 설명에 모든 이메일 ID를 하드코딩할 수 없습니다.

답변1

(멍하니)

awk -F"," '{ print $0 >> $4".csv"}' filename

설명하다:

-F"," -- Use "comma" field separator (FS) 
$0 -- the whole line of input
$4 -- the 4-th field of line ($NF -- the last field)
>> -- redirection operator, from `info gawk':

'print ITEMS >> OUTPUT-FILE'
  This redirection prints the items into the preexisting output file
  named OUTPUT-FILE.  The difference between this and the single-'>'
  redirection is that the old contents (if any) of OUTPUT-FILE are
  not erased.  Instead, the 'awk' output is appended to the file.  If
  OUTPUT-FILE does not exist, then it is created.

관련 정보