У меня есть такой текстовый файл
17 Blue
45 Purple
И мне нужно убедиться, что первые две цифры не меньше, чем число 6, а затем распечатать их. Так, например, первая строка будет печататься, так как первая цифра 1 меньше 6, а вторая цифра 7 выше 6, поэтому они не меньше 6. Следующая строка не будет печататься, потому что 4 ниже, чем 6 и 5 также ниже, чем 6. Я пытаюсь использовать awk и не добиваюсь успеха, это то, что я до сих пор. Это просто сбой в терминале / bash.
awk 'BEGIN { FS = "";} {if ($1 < 6 && $2 < 6) else print}' file.txt
Я использую FS = ""
для разделения первых двух цифр по столбцам ($1
и $2
), но не уверен, что есть более простой способ сделать это.
Может быть еще 1 подход.
awk -v val="6" 'substr($1,1,1)>val || substr($1,2,1)>val' Input_file
Там, где я специально проверяю, является ли 1-й символ 1-го поля или 2-м символом 1-го поля больше 6, где я создал переменную с именем val
, значение которой я установил в 6
, ее можно изменить как по необходимости.
О подходе OP: Да, можно установить FS=""
, но это будет более конкретно для GNU awk
ИМХО Я так не думаю, все awk
с поддержите его, поэтому он может потерпеть неудачу, если FS=""
НЕ поддерживается. Поэтому для этой задачи лучше использовать substr
или регулярное выражение (чтобы сделать решение глобальным поддерживающим).