на основе Perl решение:
perl -lne 'if ($.==1) {
print localtime($t)." $f: $c\n" if defined $t;
$c=0; $f=$ARGV; $t=(stat($f))[7];} $c++ if /$expr/o;
} BEGIN { $expr=shift @ARGV; push @ARGV,"/etc/hosts";
' "search-expression" info.log
Примечание: не проверено.
Здесь есть несколько стандартных уловок с Perl. -n
обертывает , а (<>) {
вокруг вашего кода. Когда $.
равно 1, это новый файл. Если мы обработали файл, распечатайте сводную информацию - отметку времени, имя файла, количество. Теперь, только для первой строки, получите текущее имя файла, временную метку файла и сбросьте счетчик. Для каждой строки увеличивайте счетчик, если он соответствует желаемому регулярному выражению. Завершите цикл while и запустите некоторый код инициации, который выполняется перед предыдущим блоком. Возьмите первый аргумент в качестве регулярного выражения для сопоставления в каждой строке. Теперь в списке аргументов удалите первый аргумент. Затем добавляет фиктивный файл к списку аргументов, который запускает последнее выражение print
. Это что-то вроде безобидного взлома.
Чтобы восстановить ссылку /usr/bin/java
, вы должны запустить
sudo update-java-alternatives -a
Если вы использовали Debian 9 (, как упоминалось изначально ), вы не должны были столкнуться с этими проблемами, поскольку OpenJDK 8 используется по умолчанию, а OpenJDK 7 даже недоступен. Чтобы исправить ситуацию, чтобы вы могли запускать классы версии 52 (, то есть классы Java 8 ), установите OpenJDK 8:
sudo apt install openjdk-8-jre
В Debian 8 вы можете установить OpenJDK 8 из бэкпортов:
echo deb http://archive.debian.org/debian jessie-backports main | sudo tee /etc/apt/sources.list.d/jessie-backports.list
echo 'Acquire::Check-Valid-Until "false";' | sudo tee -a /etc/apt/apt.conf
sudo apt update
sudo apt -t jessie-backports install openjdk-8-jre
(Подробнее см. Не удалось получить репозиторий бэкпортов Джесси .)
Затем вам нужно будет специально выбрать OpenJDK 8 по умолчанию:
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
(Чтобы увидеть возможные значения, запустите /usr/sbin/update-java-alternatives -l
.)
Если вы получаете сообщение об ошибке, как показано ниже:
bash: /usr/bin/java: No such file or directory
Выполнить:
apt-get install libc6-i386
Отсутствуют некоторые 32-битные библиотеки