감독과 작품 이름, 그들이 만든 영화 이름, 영화와 관련된 모든 정보가 포함된 파일이 있습니다.
여기에 파일의 처음 두 줄을 제공했습니다.
감독의 이름과 그의 이름 앞에 그가 제작한 영화의 수와 같은 해결책을 원합니다. 아래와 같이 파이프라인에서 정렬 및 고유 명령을 사용하여 영화 수를 얻을 수 있습니다. 코드는 다음과 같습니다
tail -n+2 biopic.csv | awk -F "\"*,\"*" '{print $6}' | sort | uniq -c
그것은 나에게 그들이 만든 영화의 수에 따라 감독의 목록을 제공합니다.
내가 정말로 원하는 것은 감독의 이름 뒤에 "", 그리고 그들이 만든 영화의 수입니다.
이 명령의 출력에 쉼표를 삽입할 수 있는 방법이 있습니까?
title site country year_rele box_offic director number_ subject type_of_s race_kno subject_r person_of subject_s lead_actor_actress
10 Rillingt http://ww UK 1971 - Richard Fl 1 John Chris Criminal Unknown 0 Male Richard Attenborough
답변1
파이프로 연결할 수 있습니다.perl -nle 'print "$2, $1" if /(\d+)\s(.+)/'
이는 표준 입력에서 한 줄씩 표현식을 실행하는 것입니다.
답변2
비교를 위해 biopic.csv 테스트를 만들고 귀하의 예를 기반으로 몇 줄을 쉼표로 구분하여 추가했습니다.
10,Rillingt,http://ww,UK 1971,-,Richard Fl,1,John Chris,Criminal,Unknown,0,Male,Richard Attenborough
10,Rillingt,http://ww,UK 1971,-,Don Fl,1,John Chris,Criminal,Unknown,0,Male,Richard Attenborough
...
나에게 명령을 실행
$ tail -n+2 biopic.csv | awk -F "\"*,\"*" '{print $6}' | sort | uniq -c
6 Don Fl
5 Richard Fl
이를 되돌리고 쉼표를 추가하려면 awk를 다시 사용할 수 있습니다. 이미 가지고 있는 것을 공간적으로 분할하고 필요한 문자를 추가합니다("" 사용). 좋다
print $2 " " $3 ", " $1
좋다
<firstname> <lastname>, <count>
그것은 나에게 이것을 준다
$ tail -n+2 biopic.csv | awk -F "\"*,\"*" '{print $6}' | sort | uniq -c | awk -F ' ' '{print $2 " " $3 ", " $1}'
Don Fl, 6
Richard Fl, 5