>

file.txt 가  이 목록을 포함합니다.

LIST: ACCEPTED - rfhfui4fuw3hjnf43.4fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.4fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.4f.j9u8fhjkszdnv.ckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf.43.4fj9u8fhjkszdnvckizfjh489.dfsdf

내가 원하는 것은 file.txt 인지 아는 것입니다.  모든 선이 찾으려는 패턴과 일치합니다.

예 : 패턴 ACCEPTED   file.txt 의 모든 줄과 일치합니다  그런 다음 echo "All lines are Accepted" .

나는 grep 생각  이에 대한 답변이 있지만 아직 실험 중이며 여전히 운이 없습니다.

이걸 if...else 와 함께 사용하고 싶습니다  조건.

  • 답변 # 1

    이 패턴과 일치하지 않는 줄을 하나 이상 찾는 것으로 요약합니다.

    if [ ! -s file ] || [ ! -r file ] || grep -qv ACCEPTED file; then
      echo file is empty, not readable or has at least one line without ACCEPTED
    else
      echo "all of file's lines have ACCEPTED"
    fi
    
    

    와이즈 비즈   [ ! -s file ] 를 가정  일반 파일입니다 (fifo와 같은 다른 유형의 파일에 대해 파일 크기를 확인하고 파일이 데이터를 포함하더라도 Linux와 같은 일부 시스템의 장치는 0 일 수 있습니다).

    file 와 함께 :

    awk
    
    

    모든 줄에ACCEPTED가있는 파일을 찾으려면 :

    if awk '!/ACCEPTED/{exit 1}; END {if (!NR) exit 1}' < file; then
       echo "all of file's lines have ACCEPTED"
    fi
    
    

    ( find . -type f -size +0 -readable ! -exec grep -vq ACCEPTED {} \; -print  모든 -readable 에서 사용할 수있는 것은 아닙니다  구현)

    find

  • 이전 linux - useradd 명령은 -p 옵션으로 언급 된 암호를 자릅니다
  • 다음 linux - 이름이 변경된 서비스는 어떻게 찾습니까? 별명 없음