Нужно сначала два символа из файла и убедиться, что они оба не ниже 6, а затем вернуть строку

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

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
задан kvantour 25 March 2019 в 10:34
поделиться

2 ответа

awk '!/^[0-5][0-5]/'  file.txt
0
ответ дан Tiw 25 March 2019 в 10:34
поделиться

Может быть еще 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 или регулярное выражение (чтобы сделать решение глобальным поддерживающим).

0
ответ дан RavinderSingh13 25 March 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: