Записи канала и чтения ниже размера PIPE_BUF (обычно то же как размер страницы памяти), как гарантируют, будут атомарными, таким образом, не будет никакой потребности в механизме синхронизации пространства пользователя для защиты его - ядро уже делает его. Записи/чтения, больше, чем PIPE_BUF, потребовали бы механизма синхронизации. В действительности Вы не часто видите, что большие объемы данных снизили канал в одной ласточке, таким образом, Вы не видите взаимные исключения и такой используемый очень, но они требуются, когда обстоятельства вне PIPE_BUF возникают.
Вы можете просто использовать awk
, я полагаю, что 11-е поле - это значение, которое вы имеете в виду:
awk '$11>0.001{print $0}' file
awk
понимает научную обозначение и печатает всю линию, Если утверждение верно.
Уведомление : с вывода в вашем вопросе нет строки совпадает с критериями> 0,001, поэтому ни одна строка не напечатана. Вместо этого вы можете проверить это следующим образом:
awk '$11>0.00000001{print $0}' file
4 строки должны быть напечатаны.
Если вы хотите решение в Perl,
perl -lane 'print $_ if ($F[10] >0.001)' file
-
автоматически разделяет каждую строку ввода и сохраняет столбцы в массиве @F
и $ F [0]
будет иметь первый столбец.