Как упомянул 0andriy, вы можете использовать привязку/развязку. Я делаю что-то подобное, но это будет по-другому, так как это зависит от оборудования. Чтобы отвязать модуль Wi-Fi sdio, я использую:
echo -n "2190000.usdhc" > /sys/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/driver/unbind
Это даст вам что-то вроде mmc1: card 0001 removed
в dmesg.
Затем я переключаю пин-код gpio для сброса модуля Wi-Fi
Затем перевязать:
echo -n "2190000.usdhc" > /sys/bus/soc/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/subsystem/drivers/sdhci-esdhc-imx/bind
В этот момент dmesg напечатает что-то вроде:
mmc1: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
mmc1: new high speed SDIO card at address 0001
Процесс привязки/отвязки хорошо объясняется в этой старой статье LWN.net .
Использование awk:
awk -n '$4 !=0 || $5 != 0 || $8 != 0 || $9 != 0 {print $0}' filename
просто вы также можете:
awk '$4+$5+$8+$9' infile
и сохранить строку заголовка:
awk 'NR==1 || $4+$5+$8+$9' infile
Решение awk
от @unxnut является более гибким, но в вашем конкретном случае, поскольку ваши требования просты, а формат файла также прост, grep
также может это сделать.
Включение строк, в которых хотя бы одно значение не равно -нулю, равносильно исключению строк, в которых все эти значения равны нулю. Эта команда grep
ищет строки, содержащие два экземпляра:
Любая строка, которая соответствует двум экземплярам этого шаблона (, то есть любая строка, в которой все четыре значения равны нулю ), удаляется . Остальные строки отображаются:
$ egrep -v '(\| *0 *0.*){2}' infile
A B C D E G
SES-N . | 1 0 10 | 0 0 10
CSS-N . | 0 0 10 | 0 5 10