리눅스에서 2개의 파일에서 필요한 키워드만뽑아서 정렬 어떻게내나요.??
grep 은 표준입력으로부터 내용을 읽어서 원하는 검색어로 찾는 역할만 합니다.
파일명을 함께 출력하려면 다른 명령어와 함께 조합해서 써야 됩니다.
find 로 특정 파일명을 찾은 후에 grep 을 실행하는 방법이 있습니다.
다음과 같이 입력파일을 준비합니다.
우선 find 로 *.log 패턴을 따르는 파일을 찾습니다.
find 에는 -exec -ok 등 검색된 파일을 다른 명령의 입력으로 전달하는 옵션이 있습니다. 파이프연산자('|') 를 써도 되지만 좀 더 간결하게 자체 제공하는 기능이 더 유용하기도 합니다.
앞서 찾은 파일에서 testcode 가 들어 있는지 확인하기 위해서 grep 을 연결해봅니다.
-exec 뒤에 명령어와 헤당 명령어의 옵션이 오는데 뒤에 붙는 '{}(스페이스)\+' 는 find 가 찾아낸 결과를 가리킵니다. 더 깊이 들어가면 머리아플 수 있으니까 이 부분은 find 매뉴얼을 참고하세요.
find 와 grep 을 조합한 결과에서는 순차적으로 조사하다 보니 파일명이 시간에 따라 정렬할 수 없는데 이것을 위해 이번에는 sort 명령을 조합해봅니다.
sort 는 -k (정렬할 키 번호) 로 몇번째 열을 기준으로 정렬할지 정할 수 있습니다. 스페이스를 기준으로 봤을 때 파일명 + :testcode 가 1번으로 인식될 것 같고 그 다음인 날짜(2), 시각(3) 일 것 같네요.
이러면 원하는 결과가 되었을까요?
앞의 './' 는 역시나 sed 또는 awk 를 통해서 치환하면 됩니다.
(입력) | sed 's(치환)/변경할패턴/치환할패턴/g(전체적으로 적용)'
awk -F(구분자 문자열) '{print (구분자를 기준으로 한 전후 출력할 순번)}'
여기선 './' 앞($1)에는 아무 것도 없으므로 './' 뒤를 의미하는 $2 를 출력함.