Нужно сначала два символа из файла и убедиться, что они оба не ниже 6, а затем вернуть строку - PullRequest
1 голос
/ 24 марта 2019

У меня есть такой текстовый файл

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), но не уверен, что есть более простой способ сделатьэто.

Ответы [ 2 ]

3 голосов
/ 24 марта 2019
awk '!/^[0-5][0-5]/'  file.txt
1 голос
/ 24 марта 2019

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 s поддерживают его, поэтому он может потерпеть неудачу, если FS="" НЕ поддерживается.Поэтому для этой проблемы лучше либо использовать substr, либо использовать регулярное выражение (чтобы сделать решение глобальным поддерживающим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...