bash скрипт для извлечения записей из файла CSV, чьи значения больше, чем указано в аргументе - PullRequest
0 голосов
/ 01 марта 2020

Я новичок ie в BASH и мне было интересно, не могли бы вы указать мне правильное направление. У меня есть файл CSV со следующими именами полей, разделенными ","

no,name,score,city

Я пытаюсь разработать сценарий, который будет принимать 1 аргумент (в формате числительных c), поиск столбца "score" в CSV-файл и извлечь записи больше, чем заданный аргумент.

Мне не разрешено использовать awk для достижения этой цели, вот мой черновой код. Я пробовал разные логи c и подходы с cut и grep, но не получил желаемых результатов, таких как ниже. Есть ли переключатель, который я могу использовать с grep, чтобы указать поле и применить условие?

cut -f1,2,3,4 -d, sample.csv | grep 108

Дополнительно - я подготовил приведенный ниже сценарий, но у меня возникли проблемы с синтаксисом, и мне было интересно, может ли кто-нибудь мне помочь или дать подсказку. Спасибо

отредактировано

    #!/bin/bash
    file="sample.csv"
    arg="$1"
    while IFS=',' read -r f1 f2 f3 f4
    do
        if [ "$f3" -gt "$arg" ]
        then
             echo "$f1,$f2,$f3,$f4"
        else
            echo "No score greater than "$arg""
        fi
   done < $file

1 Ответ

1 голос
/ 01 марта 2020

Попробуйте это:

#!/bin/bash
    file="sample.csv"
    arg="$1"
    empty=1
    while IFS=',' read -r f1 f2 f3 f4
    do
        if [ "$f3" -gt "$arg" ]
        then
             echo "$f1,$f2,$f3,$f4"
             empty=0
        fi
    done < $file
    if [ "$empty" -eq 1 ]
    then
            echo "No score greater than $arg"
    fi
...