텍스트 문서 이름 쿼리

텍스트 문서 이름 쿼리

mur.txt라는 파일에 남성 이름이 포함된 줄을 인쇄합니다.

이탈리아에서 온 모든 남자의 이름을 쓰세요.

이탈리아에 있는 모든 남자의 서로 다른 이름의 수를 출력하세요.

문서 앞:

Linda:F:Las Vegas, USA:18:telnet
Steve:M:Leipzig, Germany:33:ftp
Henry:M:Milan, Italy:19:sftp
Alice:F:Izmir, Turkey:32:pop3s
Robert:M:Verona, Italy:21:scp
Olga:F:Gorontalo, Indonesia:19:pop3s
Kimberly:F:Lille, France:25:ping
Henry:M:Oslo, Norway:26:ftp
Carol:F:New Delhi, India:23:pop3s
Thomas:M:New Delhi, India:32:http

답변1

이것이 바로 awk디자인의 목적입니다. 선택한 구분 기호에 따라 각 행을 필드로 분할합니다. 그런 다음 첫 번째 필드 $1, 두 번째 필드 $2등을 호출할 수 있습니다. 기본 필드 구분 기호는 공백이지만 를 사용하여 변경할 수 있습니다 -F.

  1. mur.txt라는 파일에 남성 이름이 포함된 줄을 인쇄합니다.

    awk -F: '$2~/M/' file > muser.txt
    
  2. 이탈리아에서 온 모든 남자의 이름을 쓰세요.

    awk -F: '$2=="M" && $3~/Italy$/{print $1}' file 
    
  3. 이탈리아 출신의 모든 남성에 대해 서로 다른 이름의 수를 출력하세요.

    awk -F: '$2=="M" && $3~/Italy$/{print $1}' file | sort -u | wc -l
    

    또는

    awk -F: '$2=="M" && $3~/Italy$/{!n[$1]++}END{print length(n)}' file 
    

답변2

grepand cut및 ( awk중복 사용자의 경우)을 사용하여 이 작업을 수행할 수 있습니다 .

mur.txt라는 파일에 남성 이름이 포함된 줄을 인쇄합니다.

grep :M: YourFile > muser.txt

이탈리아에서 온 모든 남자의 이름을 쓰세요.

grep :M: YourFile | grep Italy: |cut -d: -f 1

이탈리아에 있는 모든 남자의 서로 다른 이름의 수를 출력하세요.

grep :M: YourFile | grep Italy: |cut -d: -f 1| awk '!x[$0]++' | wc -l

awk '!x[$0]++'중복된 이름을 제거하는 데 사용됩니다.
wc -l이름(행) 수 계산

관련 정보