Сообщения указывают на то, что ваш профиль netctl использует dhcpcd
в качестве DHCP-клиента, а не dhclient
.
Поскольку похоже, что dhclient
работает, а dhcpcd
нет, вы можете попробовать изменить DHCP-клиент по умолчанию на dhclient
.
Либо создайте /etc/netctl/hooks/dhcp
со следующим содержимым:
#!/bin/sh
DHCPClient='dhclient'
Или создайте /etc/netctl/interfaces/eno1
со следующим содержимым:
DHCPClient='dhclient'
В обоих случаях пометить файл как исполняемый(chmod a+x
).
Просто сделай это:
awk '$5 >=.5' *.imputed.*_info > snplist.txt
Ваш код перезаписывает выходной файл при каждой итерации. Вы также фактически не вызываете awk
.
Вы хотите сделать что-то вроде
awk '$5 >= 0.5'./*.imputed.*_info >snplist.txt
Это вызовет awk
со всеми вашими файлами одновременно, и он будет проходить их один за другим, в том порядке, в котором оболочка расширяет шаблон подстановки. Если 5-й столбец любой строки в файле больше или равен 0,5, эта строка будет выведена (вsnplist.txt
). Это работает, поскольку действие по умолчанию, если никакое действие({...}
блока )не связано с условием, заключается в выводе текущей строки.
В случаях, когда у вас большое количество файлов (много тысяч ), может возникнуть ошибка «Слишком длинный список аргументов». В этом случае вы можете зациклить:
for filename in./*.imputed.*_info; do
awk '$5 >= 0.5' "$filename"
done >snplist.txt
Обратите внимание, что результат awk
не нужно сохранять в переменной. Здесь он просто выводится и цикл(и, следовательно, все команды внутри цикла )перенаправляются в snplist.txt
.
Для многих тысяч файлов это было бы довольно медленно, так как awk
нужно было бы вызывать для каждого из них отдельно.
Чтобы ускорить работу, в случаях, когда у вас слишком много файлов для одного вызова awk
, вы можете рассмотреть возможность использования xargs
следующим образом:
printf '%s\0'./*.imputed.*_info | xargs -0 awk '$5 >= 0.5' >snplist.txt
Это создаст список имен файлов с printf
и передаст их в xargs
как список, завершающийся нулем -. Утилита xargs
брала их и запускала awk
с как можно большим количеством из них одновременно, пакетами. Вывод всего конвейера будет перенаправлен на snplist.txt
.
Этот xargs
вариант предполагает, что вы используете Unix, например Linux, в котором есть команда xargs
, которая реализует нестандартную -опцию -0
для чтения ввода, завершаемого нулем -. Также предполагается, что вы используете оболочку, такую как bash
, которая имеет , встроенную -вprintf
утилиту (ksh
, оболочку по умолчанию в OpenBSD,здесь не сработает, так как в утилите )такой встроенной -нет.
Для оболочки zsh
(т.е. неbash
):
autoload -U zargs
zargs --./*.imputed.*_info -- awk '$5 >= 0.5' >snplist.txt
Здесь используется zargs
, которая в основном является повторной реализацией xargs
в виде загружаемой zsh
функции оболочки. См.zargs --help
(после загрузки функции )и руководство zshcontrib(1)
для получения дополнительной информации об этом.
У меня есть привычка использовать find
для такого рода вещей.
find. -type f -name "*.imputed.*_info" -exec awk '$5 >= 0.5' {} \; >./snplist.txt