2014-02-20 7 views
0

저는 스크립팅에 새로운 기능이있어서 손이 필요합니다.Bash는 파일의 임의의 줄을 비교하고 메시지를 출력합니다.

두 개의 파일이 있습니다. 첫 번째에는 일련의 IP와 데이터베이스 연결 수를 가지고 있고 다른 하나는 데이터베이스 이름, 최대 및 최소 연결 수, 호스트 이름 및 IP 주소를 인쇄하는 데이터 소스의 구성을 파싱했습니다.

내가 필요한 것은 데이터베이스 서버에 File1

1.2.3.4 1 
1.2.3.5 6 
1.2.3.6 1 
1.2.3.7 1 
1.2.3.8 7 

첫 번째 열은 IP이고 두 번째 열은 동시 연결의 수입니다이 두 파일을 비교하고 메시지

을 인쇄하는 것입니다 데이터베이스

01 23,516,

파일 첫번째 열은 데이터베이스의 이름 2

DB1 50 5  server1.domain.com 1.2.3.5 
DB2 50 5 server2.domain.com 1.2.3.8 
DB3 15 5  server3.domain.com 1.2.3.9 
DB4 10 1 server4.domain.com 1.2.3.4 
DB5 10 1  server5.domain.com 1.2.3.6 

는 제 2의 네 번째 서버와 제의 호스트 인 최대 연결 개수는 세 번째 minimun 연결의 수이다 IP입니다

그래서 첫 번째 파일의 IP와 두 번째 파일의 IP가 일치하고 데이터베이스 연결 수가 최대와 최소 사이에 일치하는지 비교할 때 ok이거나 ok가 아닌 경우 메시지를 인쇄하십시오. 또한 두 파일 중 하나에서 일치하지 않는 IP가있는 경우 다른 메시지를 인쇄하십시오.

이것이 가능합니까? 누군가이 문제를 해결할 수 있습니까?

미리 감사드립니다.

+0

당신은 또한 이것을 확인하고 싶을 수도 있습니다. http://www.tldp.org/LDP/abs/html/ – zee

답변

1

이를 사용할 수 있습니다

$ awk 'NR==FNR {a[$1]=$2; next} $5=a[$5]' file1 file2 
DB1 50 5 server1.domain.com 6 
DB2 50 5 server2.domain.com 7 
DB4 10 1 server4.domain.com 1 
DB5 10 1 server5.domain.com 1 

그것은 a[ip]=num_connections의 배열과 첫 번째 파일의 값을 저장합니다. 그런 다음 IP를 해당 특정 서버에 해당하는 번호로 대체하는 두 번째 파일을 반복합니다.

+0

용서해주세요. awk를 배우는 가장 좋은 방법을 소개해 주시겠습니까? – MLSC

+0

http://www.tldp.org/LDP/abs/html/awk.html – zee

+0

안녕하세요, 팁 주셔서 감사합니다. 그러나 예를 들어 3 또는 4 줄 대신 예를 들어 첫 번째 파일에 10 또는 12가있는 경우이 작업이 가능합니다. ? –

관련 문제