CSV 파일의 열 값이 1보다 큰 경우에만 Linux 명령을 실행합니다.

CSV 파일의 열 값이 1보다 큰 경우에만 Linux 명령을 실행합니다.

CSV 파일의 특정 열 값이 1보다 큰 경우에만 Linux 명령을 실행하는 방법을 찾으려고 합니다.

샘플 CSV 파일:

Item,Quantity  
Pen,1  
Pencil,1  
Stapler,3  

위의 예를 사용하여 내 스크립트가 CSV의 열 2를 확인하고 값이 1보다 큰 경우(이 경우 3이기 때문에) 명령을 실행하고 열 2의 모든 값이 1과 같도록 하려고 합니다. , 그러면 아무것도 할 수 없습니다.

이 작업을 도와줄 사람이 있나요?

답변1

awk -F, 'NR>1 && $2 > 1 {found=1 ; exit} ; END {exit !found}' file.csv && mycommand

0필드 2 > 1인 경우 (true)로 종료합니다. 그렇지 않으면 1(false)로 종료합니다. mycommandtrue인 경우 실행합니다.

NR>1헤더를 건너뜁니다 Item,Quantity(문자열 "수량"은 > 1로 평가됨).

답변2

열을 확인 awk하고 기준을 충족하면 특정 번호로 종료됩니다. 그런 다음 명령을 사용하여 종료 코드를 테스트 $?하고 명령을 실행합니다.

awk -F ',' '$2>1{exit 42}' file
[[ "$?" -eq 42 ]] && echo yes || echo no

답변3

이렇게 하면 트릭을 수행할 수 있습니다.

if grep -qE ',([2-9]|[1-9][0-9])' file
then
    echo execute your command
fi

답변4

#!/bin/bash

if [[ $(cut -d, -f2 file.txt | grep '[0-9]' | sort -nr | head -1) -gt 1 ]]; then
  echo 'a number in the 2nd column is greater than 1.'
else
  echo 'i am doing nothing.'
fi

관련 정보