Линии печати, у которых число полей больше, чем в AWK - программирование

Линии печати, у которых число полей больше, чем в AWK

Я пишу script в bash, который принимает параметр и сохраняет его;

threshold = $1

Затем у меня есть пример данных, которые выглядят примерно так:

5 blargh
6 tree
2 dog
1 fox
9 fridge

Я хочу напечатать только строки, у которых их число больше числа, которое вводится как параметр (порог).

В настоящее время я использую:

awk '{print $1 > $threshold}' ./file

Но ничего не распечатывается, помощь будет оценена.

4b9b3361

Ответ 1

Вы близки, но это должно быть примерно так:

$ threshold=3
$ awk -v threshold="$threshold" '$1 > threshold' file

Создание переменной с помощью -v позволяет избежать уродства в попытке расширить переменные оболочки в awk script.

EDIT:

Есть несколько проблем с текущим кодом, который вы указали. Во-первых, ваш awk script одинарный кавычек (хороший), который останавливает $threshold от расширения, поэтому значение никогда не будет вставлено в ваш script. Во-вторых, ваше состояние находится за фигурными фигурными скобками, что сделало бы это:

$1 > threshold { print }

Это работает, но `print не требуется (это действие по умолчанию), поэтому я сократил его до

$1 > threshold