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
.
mur.txt라는 파일에 남성 이름이 포함된 줄을 인쇄합니다.
awk -F: '$2~/M/' file > muser.txt
이탈리아에서 온 모든 남자의 이름을 쓰세요.
awk -F: '$2=="M" && $3~/Italy$/{print $1}' file
이탈리아 출신의 모든 남성에 대해 서로 다른 이름의 수를 출력하세요.
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
grep
and 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
이름(행) 수 계산