2012-01-04 1 views
0

디렉토리 아래의 모든 파일에서 가장 많은 첫 줄을 필터링하는 방법 (다른 디렉토리도 확인해야 함)?bash 스크립팅 방법 가장 많이 계산 된 첫 번째 줄을 필터링하는 방법

: 나는이 첫 번째 var에 나는이 같은 awk를 사용하는 것을 시도하고있다

대부분의 시간을 표시 곳 (나는 pwd에서 폴더가 많이있는 모든 파일을 원하는) 내 파일에서 첫번째 변수를 모든 라인을 찾고 싶어요

awk -f : { print $1} FILENAME 

편집 : 나는 목적을 설명합니다 : 나는 서버를 가지고 내가 라인에서 매일 100 회 첫 VAR를 반복 특정 IP가 원인이 자신의 로그를 필터링 할 하면 IP 내가 찾기를 원하는 것입니다 문제를 반복하는 IP는 무엇인가 : 나는 두 개의 서버를 가지고 있으므로이 서버가 하나의 로그를 100 번 확인합니다.이 스크립트가 반복되는 IP가 무엇인지 알아내는 데 도움이되기를 바랍니다. ...

+1

'awk -f :'는':'파일에서 스크립트를 읽으려고합니다. 그리고'{','print','$ 1}'과 FILENAME을 파일 이름으로 처리합니다. awk -F : '{print $ 1}'FILENAME'을 의미 할 수도 있습니다. –

+2

나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. 예제 입력과 원하는 출력으로 자세히 설명해 주시겠습니까? – MattH

+0

너는 너가있는 것을 계속 확장해야 할거야. 현재 디렉토리 아래에있는 파일에서 가장 일반적으로 발생하는 접두사 뒤에 오는 것처럼 들리지만 접두사는 첫 번째 콜론까지의 줄의 일부입니다 (콜론이있는 경우 모두 - 그렇지 않으면, 전체 라인). –

답변

2

질문을 다시 작성하여 명확하게 작성해야합니다. 나는 당신이 파일의 집합을 가로 질러 어떤 첫번째 줄이 가장 흔한 지 알고 싶어한다는 것을 이해했다. 이를 위해, 나는 이것을 사용하십시오 :

head -qn 1 * | sort | uniq -c | sort -nr 

head는 현재 디렉토리에있는 모든 파일의 첫 번째 줄을 인쇄합니다. -q은 파일 이름도 인쇄하지 않습니다. -n을 사용하여 행의 수를 지정할 수 있습니다.

sort 정렬 순서대로 그룹화합니다.

uniq -c은 이전 정렬 이후의 각 블록에서 반복되는 행의 양을 나타냅니다.

sort -r 가장 인기있는 것으로 먼저 주문하십시오. -r은 반대를 의미합니다. 기본적으로 오름차순으로 정렬됩니다.

+0

당신은 각 매개 변수가 무엇을하는지 설명 할 수 있습니까 –

+0

나는 더 명확하게하려고 노력했습니다. –

0

도움이 될지 확실하지 않은 경우. 질문이 그렇게 명확하지 않습니다.

다음과 같이 시도해보십시오.

find . -type f -name "*.*" -exec head -1 {} \; 2>/dev/null | awk -F':' 'BEGIN {max=0;}{if($2>max){max=$2;}}END{print max;}' 

발견 - 모든 이름과 확장자 (*.*)과 끝 (type f)까지 현재 디렉토리의 모든 파일을 찾으려고과 각 파일의 첫 번째 줄을 가져옵니다. (-F:) 및 후 두 번째 필드를 얻을 0 최대 설정 BEGIN 첫번째 라인 처리 전에 : $2 > current_max_value 경우 ($2) 체크 -

AWK 같이 필드 구분자를 설정한다. 일치하면 현재 필드를 새로운 최대 값으로 설정합니다. 모든 행 처리 중 (현재 디렉토리 아래의 모든 파일에서 첫 번째 행) END은 최대 값을 인쇄합니다.

+0

더 설명 할 수 있습니까? –

+0

이 명령을 설명하기 위해 편집되었습니다. –

관련 문제