Это может быть проще с perl
, если вы хотите сохранить интервалы:
perl -lne '
$i = 0;
for (/\S+\s*/g) {
$cell[$.][$i] = $_;
$sum[$i++] += $_
}
END{
@keep=(0, grep {$sum[$_]} (1..$#sum));
print((@{$cell[$_]})[@keep]) for (1..$.)
}'
Это загружает весь файл в память. Чтобы избежать этого, вам понадобится два прохода в файле.
Это можно сделать с помощью комбинации awk
и sed
:
awk '
NR>1{for (i=2; i<=NF; i++) sum[i]+=$i; if (NF>n) n = NF}
END {
for (;n>1;n--)
if (!sum[n])
print "s/[^[:blank:]]\\{1,\\}[[:blank:]]*//" n
}' < file | sed -f - file
awk
генерирует сценарий sed
для удаления столбцов, сумма которых равна 0. Команды s/[^[:blank:]]\{1,\}[[:blank:]]*//3
sed
удалят столбцы с сохранением интервалов между остальными столбцами, но это будет довольно дорого, вы можете захотеть сделать это удаление в perl
, если производительность является проблемой.
Для строк все гораздо проще:
perl -MList::Util=sum -lane 'print if $. == 1 or sum @F'
У меня та же проблема с установкой Kali. Первоначально я думал, что это связано с установленным мной программным обеспечением VPN, но после некоторых исследований оказалось, что проблема связана с Kali.
Более простое решение проблемы, которое я использовал, это:sudo apt-get purge resolvconf
Затем сразу после этого прогонаsudo apt-get install resolvconf
К сожалению, на данный момент мне приходится делать это при каждой загрузке, но у меня была такая же мысль, как и у вас, создать сценарий запуска для автоматической очистки и повторной -установки файла resolvconf. Использование этих двух команд было бы немного проще, чем повторное создание отсутствующего каталога вручную, и, возможно, упростить написание сценария запуска.
Я только что создал простой bash-скрипт в своей корневой папке...
touch netresolv.sh
vim netresolv.sh
// заменяем избранный редактор наvim
Код:
#!/bin/bash
echo "nameserver 8.8.8.8" > /etc/resolv.conf && echo "nameserver 1.1.1.1" >> /etc/resolv.conf && service
NetworkManager restart && exit
//сохранение и выход из текстового -редактора
chmod +x netresolv.conf
прямо сейчас я просто запускаю его вручную каждый раз после входа в систему, так как изучаю, как и где добавить скрипт для автоматического запуска после каждого перезапуска при входе в систему...
Может ли кто-нибудь сказать мне, как довести этот скрипт до конца? Я не хочу, чтобы он запускался до входа в систему, потому что это подключит Интернет до того, как пользователь root войдет в систему, что сделает его уязвимым, или так? Добавлю ли я его как задание cron
? или как сервис systemd
? или добавить к ~/.profile
?