Я попробовал это на Ubuntu, но не вижу, почему она не работала бы над другими вариантами Unix.
Если оба пользователя являются членами общей группы, и путь сокета использует ту группу, которую оба пользователя смогут присоединить прекрасный.
Вместо того, чтобы иметь необходимость изменить полномочия пути сокета каждый раз, когда Вы создаете тот, Вы могли создать определенный каталог для сокетов (я использовал/var/tmux).
Сначала добавьте группу для tmux пользователей
$ addgroup $TMUX_GROUP
Создайте каталог с набором группы к $TMUX_GROUP и используйте бит setgid так, чтобы файлам, созданным в рамках каталога автоматически, установили группу на $TMUX_GROUP.
$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux
Затем удостоверьтесь пользователи, которые хотят совместно использовать сессию, члены $TMUX_GROUP
$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
Так, ответ становится:
column -t file_name
Обратите внимание, что это разделяет столбцы в любом пробеле, не просто вкладки. Если Вы хотите разделить на вкладках только, используйте:
column -t -s $'\t' -n file_name
-s $'\t'
устанавливает разделитель на вкладки только и -n
сохраняет пустые столбцы (смежные вкладки).
P.S.: Просто хочу указать, что кредит переходит к Alex также. Исходная подсказка была обеспечена им как комментарий к вопросу, но никогда не отправлялась как ответ.
Вот сценарий, чтобы сделать это:
aligntabs.pl
#!/usr/bin/perl
my $delim = '\s*\t\s*';
my %length = ();
my @lines = ();
for my $line (<>) {
chomp $line;
my @words = split $delim, $line;
my $numwords = scalar(@words);
for my $i (0..$numwords-1) {
my $maxlen = $length{$i} // 0;
my $thislen = length($words[$i]);
$maxlen = ($thislen > $maxlen)? $thislen: $maxlen;
$length{$i} = $maxlen;
}
push @lines, [@words];
}
foreach my $wordsref (@lines) {
my @words = @$wordsref;
my $numwords = scalar(@words);
for my $i (0..$numwords-1) {
if ($i < $numwords-1) {
my $fieldlen = $length{$i};
printf "%-${fieldlen}s ", $words[$i];
}
else {
print $words[$i];
}
}
print "\n";
}
использование
$ aligntabs.pl < infile
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
pr
и nl
два основных инструмента для форматирования, и после этого awk
, sed
, perl
, и т.д.
– Mikel
20.02.2011, 13:13
sed 's/||/| |/g;s/||/| |/g' filename-here | column -s"|" -t | less -#2 -N -S
Объяснение:
Sed добавит пробел между пустыми разделителями
Столбец добавит равный интервал между столбцами
zydsld|asl|asd
das|aosdk|dd
станет
zydsld|asl |asd
das |aosdk|dd
Меньше откроет вывод в средстве просмотра файлов . -N и -S добавят номер строки и отключат перенос соответственно
Следуя комментарию Peter.O, который является тем, что я хотел выровнять (данные с разделительной вкладкой, TSV), эта фраза работает очень хорошо:
column -t -s $'\t' /Users/me/data.csv | less --chop-long-lines
С Миллером(http://johnkerl.org/miller/doc)у вас есть симпатичный вывод на печать.
Выполнить
mlr --inidx --ifs "\t" --opprint cat input | tail -n +2
иметь
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
column
:) – Barun 21.02.2011, 07:51column
кажется, перестал работать, когда это встречается с пустыми ячейками. См. это сообщение. В зависимости от которой версииcolumn
Вы имеете, Вы можете указывать-n
опция исправить это. Право – John J. Camilleri 18.07.2012, 10:29column -t -s $'\t'
. – Fritz 06.02.2017, 14:45