Как насчет:
perl -e 'print sort map {s/(\d).*(\w)\..*//r} <>'
(Требуется perl 5.14+ - вероятно, он уже установлен в вашей системе)
Использует встроенный бит кода Perl, который :
<>
, который является STDIN или файлами, указанными в командной строке. (\ d)
и букву непосредственно перед .
(\ w) \.
r
флаг регулярного выражения.
для итерации STDIN
. сортируют
, чтобы ... ну, сортировать. напечатайте
, чтобы распечатать его. Вывод:
1 a
1 b
1 c
2 e
3 d
Альтернативно:
perl -e '%x=map {open($f,'<',$_); @f=<$f>; $_=>''.@f} @ARGV;print "$x{$_} $_\n" for sort {$x{$a}<=>$x{$b}} keys %x;' ~location/folder/folder/*.log
Для этого можно использовать экран.
https://www.gnu.org/software/screen/
Шаги:
Сеанс продолжает работать в фоновом режиме. Даже если вы выйдете из системы и полностью закроете сеанс ssh.
Если вы используете корпоративный Linux, такой как Centos, вы можете использовать yum для установки screen из репозитория пакетов дистрибутива.
yum -y install screen
Если вы используете ОС на базе Debian, попробуйте использовать:
apt-get install screen
После установки запустите новый сеанс screen, просто набрав screen.
[user@localhost ~]$ экран
Note: This will clear the screen and start a new session.
Запустите свою команду:
[user@localhost ~]$ rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
Отключить сеанс экрана:
ctrl +a, d
[отдельно]
Вы можете убедиться, что ваш процесс все еще работает, с помощью netstat. Если ваша ОС поддерживает это, вы можете использовать флаг -p, чтобы показать идентификатор запущенного процесса.
-p, --program Show the PID and name of the program to which each socket belongs.
[user@localhost ~]$ netstat -anp | grep 1234
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:1234 0.0.0.0:* LISTEN 30599/nc
И вы можете использовать ps, чтобы показать, что процесс все еще выполняется:
[user@localhost~]$ ps -ef | grep [3]1037
500 31037 31019 0 21:45 pts/2 00:00:00 nc -l 127.0.0.1 1234
Note: placing square braces '[]' around the first number of the pid, is a little regex trick to avoid showing the grep process itself. Essentially a false match, and not your actual process.
Вы можете показать сеанс отсоединенного экрана с помощью screen -ls
[user@localhost~]$ screen -ls
There is a screen on:
30562.pts-0.localhost (Detached)
1 Socket in /var/run/screen/S-user.
И вы можете повторно -прикрепить к нему экран -r или экран -x и имя сеанса
[user@localhost ~]$ screen -x 30562.pts-0.localhost
Вы хотите использовать nohup
для запуска ваших команд даже после закрытия соединения ssh(удаленный оператор вешает трубку). Процедура такая же, как и в этом ответе:
nohup sh -c 'rm -f /tmp/f ; mkfifo /tmp/f && cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f'