2014-04-18 2 views
0

검색 패턴과 쉼표로 구분 된 파일 이름으로 된 CVS 파일이 있습니다. 검색 패턴과 파일을 얻기 위해 CVS를 읽고 grep을하고 싶습니다. 노력했지만 작동하지 않습니다. 이 포인터는 도움이 될 것입니다. CSV 파일 (DC2LOGS.csv를 찾아주세요while 루프 내 Grep

SearchPattern,FilenamewithPath 
-116329548,/opt/httpd/logs/apps/atasvc/prod3/was70/atasvc-59596/ata.log 
-91756,/opt/httpd/logs/apps/atasvc/prod3/was70/atasvc-59596/ata.log 
-86160,/opt/httpd/logs/apps/atasvc/prod3/was70/atasvc-59596/ata.log.1 

그렙 코드 :. 사전에

cat DC2Logs.csv | while read a b c d e; do grep -E "CLAManager.getAttributeFromCLAMapping() took.*$d.*" < "$e"; done; 

감사를

+0

달성하려는 목표는 무엇입니까? – devnull

+0

입력 및 파일 이름이 CSV 파일에서 오는 동적 grep을 수행하려고합니다. – user3264197

답변

2

을 나는 당신이 찾고있는 생각한다.

while IFS=, read pattern filename; do 
    grep -e "$pattern" "$filename"; 
done < DC2LOGS.csv 

(당신은 -e이 패턴의 주요 하이픈에 대해 보호하여 grep이 옵션으로 취급하도록하고 싶습니다. . 당신이 -E을 원하는 R 여부는이 첫 번째 줄 (헤더)를 사용하려고 것

주)까지, 그래서 아마 당신이 원하는 : 대신

sed -e 1d DC2LOGS.csv | while IFS=, read pattern filename; do 
    grep -e "$pattern" "$filename" 
done 

.

+0

다음 명령을 실행하려고 할 때. 다음과 같은 오류가 발생합니다. 나는 -E 옵션을 사용하고있다. 오류 : -grep : CLAManager.getAttributeFromCLAMapping()이 사용되었습니다. * - 226746. * : 해당 파일이나 디렉토리가 없습니다. 나는 이것을 어떻게 해결해야할지 모른다. 나는 유닉스를 조금 배우고있다. – user3264197

+0

'grep'을'echo'로 대체하고 명령이 의미가 있는지 확인하십시오. 이제 파일의 패턴을 패턴의 일부분 만 읽으 려하므로'grep -E -e "를 사용하십시오. CLAmanager ... $ pattern" "$ filename"' –