파일에 여러 문자열이 있는지 확인하는 쉘 스크립트

파일에 여러 문자열이 있는지 확인하는 쉘 스크립트

끈이 3개 있어요

A='apples'
B='bananas'
C='carrots'

fruit.txt이 모든 것이 파일에 있는지 확인하고 싶습니다 . 가 누락된 경우 을 A추가한 A다음 B을 추가하는 B식으로 진행합니다.

이게 지금 내가 갖고 있는 거야

if grep -qF "$A | $B | $C" fruit.txt;
  then echo 'exist'
else
  echo 'does not exist'
  echo $A $B $C >> fruit.txt
fi

답변1

수행하려는 작업에 대한 설명에는 루프에 대한 설명("문자열이 없으면 추가하고 모든 문자열에 대해 반복")이 포함됩니다.

루프에서 각 문자열의 존재 여부를 개별적으로 테스트한 다음 해당 문자열이 아직 파일에 없으면 추가할 수 있습니다.

fruits=( apples bananas carrots )

for fruit in "${fruits[@]}"; do
    if grep -q -wF -e "$fruit" fruit.txt; then
        printf '%s exists\n' "$fruit"
    else
        printf '%s does not exist\n' "$fruit"
        printf '%s\n' "$fruit" >>fruit.txt
    fi
done

여기서는 배열을 문자열로 사용하고 있습니다. $A, $B및 변수를 사용하려면 을 $C사용하여 설정 fruits=( "$A" "$B" "$C" )하거나 반복하십시오 for fruit in "$A" "$B" "$C"; do ...; done.

답변2

귀하의 질문에 엄격하게 대답하려면 다음을 수행하십시오.

grep -lr $1 . | xargs -I{} grep -lr $2 {}

$1그러면 AND가 포함된 파일이 검색됩니다 .$2

관련 정보