2009-09-02 3 views
0

일련의 파일에 대해 연속적으로 사용하는 파일, 파일의 행 수를 계산하고 해당 입력의 일부로 출력 파일로 출력하는 Linux 명령 출력 라인의 일부로 파일.입력 파일 이름과 행 수의 일부를 출력하는 Linux 명령

Yellow 28 
+0

모든 파일이 LOG_로 시작합니까? –

+0

예. 나는 awk와 wc -l의 조합을 사용하는 것이 가장 좋을 것이라고 생각한다. – biznez

+0

나는 왜 이것이 수퍼 유저 (또는 서버와 관련된 모든 리눅스 질문을 고려한다면 serverfault)에 속해 있지 않은지에 관해서 분실했다. – rmeador

답변

4
wc -l [filenames] | grep -v " total$" | sed s/[prefix]// 

wc -l은 거의 올바른 형식으로 출력을 생성합니다. grep -v는 wc가 생성하는 "총"행을 제거합니다. sed는 파일 이름에서 원하지 않는 쓰레기를 제거합니다. 당신을위한 스크립트를 작성 짧은

2
wc -l * | head --lines=-1 > output.txt 

이 같은 출력을 생성합니다 : 예를 들어 우리가 파일 LOG_Yellow보고 있었다과 28 개 라인을 가지고 그래서, 출력 파일은 다음과 같은 라인을 (Yellow28이 탭으로 분리) 할 것이다

linecount1 filename1 
linecount2 filename2 

나는 당신이 여기까지 당신의 필요에 따라 일할 수 있어야한다고 생각합니다.

편집 : 내가 이름 추출에 대한 규칙을 보지 못했기 때문에, 나는 여전히 전체 이름을 남깁니다. 그러나 다른 답변과 달리 head 대신 grep을 사용하는 것이 더 빠를뿐만 아니라 total*이라는 파일을 필터링하는 경우를 피할 수 있습니다.

EDIT2

는 (코멘트를 읽은) : 다음이 훨씬을 수행합니다

wc -l * | head --lines=-1 | sed s/LOG_// | awk '{print $2 "\t" $1}' > output.txt 
2

wc -l *| grep -v " total" 전송을

28 노란색 당신이 원한다면 당신은 그것을 되돌릴 수

(awk, 파일 이름에 공백이없는 경우) wc -l *| egrep -v " total$" | sed s/[prefix]// | awk '{print $2 " " $1}'

+0

'sed'에 대한 Sbodd의 호출을 추가하면 이것이 답변입니다. – Welbog

1

: '에 대한'

  • 파일을 통해 반복합니다.
  • 는 현재 파일을 인쇄하기 위해 '-n 에코'
  • '화장실 -l'줄 수
  • 을 찾는하고 ('>'또는 '>>') 결과를 리디렉션하는 것을 잊지 말아 귀하 출력 파일