에코 발견 키워드

에코 발견 키워드

아래 스크립트에서 [각] 파일에 대해 어떤 키워드가 있는지 알아보려고 합니다. echo $keywords를 추가하려고 시도했는데 각 키워드만 출력되었습니다.

암호:

keywords=("Alachua" "ALACHUA" "alachua" "Archer" "Gainesville" "Hawthorne" "High Springs" "Newberry" "Waldo" "LaCrosse" "PA-LOCKA" "PALMETTO BAY" "PINECREST" "34997")
IFS=$'\n'
find . -size +1c -type f ! -exec grep -qwF "${keywords[*]}" {} \; -exec truncate -s 0 {} \;   

고쳐 쓰다:

내 문제는 이 예제보다 더 많은 키워드가 있고 각 파일에 어떤 키워드가 있는지 확실하지 않다는 것입니다. 결과가 엉망이 될 수 있으므로 $keywords에서 제거해야 합니다.

답변1

몇 가지 질문이 있습니다:

  1. 당신은 "${keywords[*]}"혼란스러워 합니다 "${keywords[@]}". 전자는 다음으로 확장된다.하나토론.

  2. -q모든 출력을 억제합니다.

  3. 스키마가 여러 개인 경우 이를 매개변수 목록으로 전달할 수 없습니다. 당신이 필요로하는 것은 -e pattern1 -e pattern2입니다. 아니면 파일로 전달해야 합니다(참고자료 참조 -f).

awk이 경우에는 더 의미가 있다고 생각합니다 .

이는 유용할 수 있습니다.

awk -v patternfile=pattern \
'BEGINFILE {i=0; while(getline var <patternfile) {pattern[i]=var;i++}; '\
'no_patterns=i; close(patternfile)}; '\
'FNR == 1 {print ""; print "file: " FILENAME;}; '\
'{for (i in pattern) { if($0 ~ pattern[i]) {print pattern[i]; delete pattern[i]};}}' \
file file2

관련 정보