다음 문제를 해결하는 명령은 무엇입니까?

다음 문제를 해결하는 명령은 무엇입니까?

목적

노드 사이의 기존 링크를 모두 나열하여 그래프에 대한 텍스트 설명이 포함된 그래프라는 파일이 있습니다. 각 줄에는 다음과 같이 표시되는 링크가 포함되어 있습니다.

number1->number2

number2노드 번호로부터 링크를 받는 노드 번호입니다 ( 에서 까지의 링크 number1가 있습니다 ).number1number2

실제로 가장 많은 링크를 수신하는 노드인 가장 "인기 있는" 노드를 찾아야 합니다.

제한 요인

  1. sedor 명령 대신 하나의 명령(여러 파이프 포함)을 사용하면 됩니다 awk.

  2. 명령줄에는 가장 인기 있는 노드 수와 해당 노드가 수신한 링크 수(반드시 순서대로일 필요는 없음)라는 두 가지 숫자만 표시되어야 합니다.

차트 파일에는 무엇이 들어있나요?

110->41
74->125
117->29
135->85
24->68
34->25
58->81
18->77
108->20
36->89
45->43
75->28
57->18
135->5
74->126
18->7
40->63
18->123
9->17
133->2
86->10
91->12
125->74
133->25
121->53
135->41
55->81
60->25
16->78
47->40
112->30
12->99
71->107
135->42
31->53
108->99
54->55
49->69
37->24
26->31
64->93
47->65
98->14
108->34
15->60
80->119
40->65
41->110
42->13
95->56
134->62
18->29
40->47
43->125
103->102
18->93
79->68
21->35
87->116
108->124
40->29
94->75
48->33
59->20
18->119
18->63
51->17
45->133
18->22
6->72
43->15
108->127
73->115
12->98
77->88
43->102
29->67
12->106
65->30
46->94
126->13
77->135
126->129
52->10
43->129
89->67
118->91
109->57
80->134
18->38
7->123
25->121
114->21
13->125
62->50
46->28
43->70
99->108
24->130
14->9
126->85
8->116
89->36
128->34
28->109
126->5
95->86
20->83
95->76
86->111
89->112
103->78
132->39
53->121
41->54
101->122
18->33
18->116
133->120
129->85
12->71
19->46
12->118
59->25
79->6
81->58
119->127
31->26
15->59
92->7
33->44
123->124
40->112
86->74
30->47
79->111
27->23
18->71
75->94
38->29
77->75
120->104
99->127
23->22
75->32
11->115
52->111
79->130
40->89
4->114
89->4
123->7
17->97
85->53
18->11
55->54
93->96
43->126
126->42
113->8
40->8
35->21
130->127
9->98
83->131
3->64
105->103
18->68
23->122
0->77
124->25
52->67
77->25
48->1
17->103
48->10
111->79
56->52
104->105
69->129
18->27
29->115
8->114
108->25
61->106
48->6
68->118
118->68
130->124
135->125
18->14
67->92
4->80
17->100
10->132
106->61
39->19
8->113
40->38
88->66
15->39
46->32
9->43
37->111
1->35
128->109
91->128
40->117
18->64
20->77
82->25
86->87
18->6
37->79
66->31
86->33
43->125
16->2
107->88
47->117
47->88
20->135
73->84
32->49
72->54
89->84
52->56
29->132
117->52
50->78
43->108
61->19
18->0
9->0
86->7
39->64
44->86
12->43
11->116
1->21
90->51
40->3
18->95
78->131
100->16
127->130
133->100
126->41
76->95
114->25
63->27
118->51
34->128
76->50
27->25
131->82
116->66
43->45
35->15
17->4
36->40
122->3
78->82
102->105
18->107
17->120
5->129
114->15
2->48
133->16
84->73
18->115
18->37
81->24
18->130
123->113
97->5
37->72
91->90
20->24
115->38
96->25
1->15
70->101
89->97
79->37
22->101
40->100
3->25
40->36

답변1

이것은 작동합니다:

cut -d '>' -f 2 graph | sort | uniq -c | sort -n | tail -n 1

그러면 해당 노드와 같은 줄에 있는 노드에 대한 링크 수가 인쇄됩니다(링크 수가 먼저, 노드가 두 번째). 별도의 줄에 표시하려면 다음 명령을 사용하십시오.

cut -d '>' -f 2 graph | sort | uniq -c | sort -n | tail -n 1 | tr ' ' '\n'

또는 다음과 같이 사람이 읽을 수 있는 멋진 출력을 가질 수도 있습니다.

cut -d '>' -f 2 graph | sort | uniq -c | sort -n | tail -n 1 | xargs printf 'Number of links: %s\nNode: %s\n'

먼저 cut출력을 >구분 기호로 사용하고 -f 2가장자리가 연결되는 노드인 두 번째 필드( )를 얻습니다.

다음으로 를 사용합니다 . 그렇지 않으면 예상대로 작동하지 않기 sort때문에 정렬합니다 ( 중복 행은 인접하지 않으면 감지되지 않습니다).uniquniq

uniq -c다음으로 각 노드의 수를 가져오는 데 사용합니다 .

숫자순으로 다시 정렬하는 옵션을 사용합니다 -n. 이 초 이후에는 sort들어오는 링크 수가 가장 적은 노드부터 들어오는 링크가 가장 많은 노드까지 출력이 정렬됩니다.

tail -n 1가장 많은 수신 링크가 있는 노드가 있는 행인 마지막 행을 반환합니다.

두 번째 버전의 섹션은 tr개수와 노드 사이의 공백 문자를 개행 문자로 바꿉니다.

답변2

읽고 man cut sort uniq tail다음과 같은 일을 해보세요

cut '-d>' -f 2 graph | \
  sort -n | \
  uniq -c | \
  sort -n | \
  tail -n 1

관련 정보