인수를 파일 텍스트와 비교(if 절)

인수를 파일 텍스트와 비교(if 절)

다음과 같은 정보가 포함된 간단한 txt 파일이 있습니다.

"John;23124;Firefighter;[email protected]"
"Hannah;34241;Hairdresser;[email protected]"

내가 원하는 것은 주어진 매개변수를 비교하여 if 문을 표현하고 해당 매개변수가 파일 텍스트의 어떤 줄과 같은지 확인하는 것입니다. 예를 들어 ("John" 23124 "Fireman""[이메일 보호됨]")는 내가 제공하는 인수이며 파일의 첫 번째 줄과 일치합니다.

시도해 보았지만 if[(cat filename.txt | grep $2 | wc -l) - gt 0]작동하지 않는 것 같습니다.

답변1

완료하는 데 사용할 수 있습니다 awk.
파일이 로 구분된 경우 매개변수를 ;추가해야 합니다 -F ';'.

cat yourfile | awk -F ';' '{print ($2>30000)? "foo" : "bar"}'

bar첫 번째 줄(매개변수가 너무 낮음)
foo두 번째 줄을 인쇄합니다 .

존재 하는지 확인하려면 $2다음을 수행하십시오.

cat yourfile | awk -F ';' '{print $2? "foo" : "bar"}'

특정 패턴이 있는 행 수를 알고 싶다면 다음을 수행하세요.

cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l

그런 다음 다음 조건에서 사용할 수 있습니다.

[ $(cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l) -gt 2 ] \
&& echo "at least 2 matches" \
|| echo "less than 2 matches"

if또는 진술을 선호하는 경우 :

if [ $(cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l) -gt 2 ];
then
    echo "at least 2 matches"
else
    echo "less than 2 matches";
fi

관련 정보