Поскольку вы поняли, что вам «не нужны 2 файла» , используйте следующееawk
решение для обработки начального файла журнала за один проход:
awk '{
u_name = substr($5, 1, index($5, "@"));
if (!(u_name in users)) users[u_name] = ++c;
sub(/^[^@]+/, "USER" users[u_name], $5)
}1' file.log
Выход:
12:00:00 (AAA) OUT: "string" USER1@hostname
12:00:00 (AAA) OUT: "string" USER1@hostname
12:00:00 (AAA) OUT: "string" USER2@hostname
12:00:00 (AAA) OUT: "string" USER1@hostname
12:00:00 (AAA) OUT: "string" USER3@hostname
Вы можете написать сценарий оболочки, который зацикливается на сеансах, что-то вроде (не тестировалось):
#!/bin/bash
tmux ls -F '#{session_id} #{session_name}'|while read i; do
s=$(echo $i|awk '{print $1}')
name=$(echo $i|sed 's|^[^ ]* ||')
printf "session $name? "
read -n1 k </dev/tty
echo
case $k in
d)
tmux detach -s$s
;;
D)
tmux kill-session -t$s
;;
c)
tmux detach -Ps$s
;;
esac
done