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)로 종료합니다. mycommand
true인 경우 실행합니다.
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