управляйте к разделенному списку вкладки расположения приятно

Я попробовал это на 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
40
20.02.2011, 21:14
6 ответов

Так, ответ становится:

column -t file_name

Обратите внимание, что это разделяет столбцы в любом пробеле, не просто вкладки. Если Вы хотите разделить на вкладках только, используйте:

column -t -s $'\t' -n file_name

-s $'\t' устанавливает разделитель на вкладки только и -n сохраняет пустые столбцы (смежные вкладки).

P.S.: Просто хочу указать, что кредит переходит к Alex также. Исходная подсказка была обеспечена им как комментарий к вопросу, но никогда не отправлялась как ответ.

52
27.01.2020, 19:35
  • 1
    я буду ожидать немного, чтобы Alex получил кредит, я думаю, что он заслуживает его. Если он не ответил бы через несколько дней, я приму ответ от кого-то еще. –  Elazar Leibovich 20.02.2011, 21:23
  • 2
    Уверенный! Я также не знал column :) –  Barun 21.02.2011, 07:51
  • 3
    Это кажется идеальным, но к сожалению column кажется, перестал работать, когда это встречается с пустыми ячейками. См. это сообщение. В зависимости от которой версии column Вы имеете, Вы можете указывать -n опция исправить это. Право –  John J. Camilleri 18.07.2012, 10:29
  • 4
    кроме того, эта команда не только разделит на вкладках, но также и на "любом пробеле". Для разделения только на вкладках использовать column -t -s $'\t'. –  Fritz 06.02.2017, 14:45

Вот сценарий, чтобы сделать это:

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
3
27.01.2020, 19:35
  • 1
    Гм, спасибо, но я надеялся, что существует более "портативный" способ сделать это. –  Elazar Leibovich 20.02.2011, 13:08
  • 2
    Я также! Не удалось найти тот. pr и nl два основных инструмента для форматирования, и после этого awk, sed, perl, и т.д. –  Mikel 20.02.2011, 13:13
  • 3
    это столь же просто как column –  Elazar Leibovich 20.02.2011, 13:51
  • 4
    @Elzar! column -t -s $'\t' кажется, делает задание. –  Mikel 20.02.2011, 22:33

Для ручных позиций табуляции: expand -t 42,48

Для автоматических позиций табуляции, как предложено alex: column -t

(expand находится во всех системах POSIX. column утилита BSD, доступная во многих дистрибутивах Linux также.)

3
27.01.2020, 19:35
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 добавят номер строки и отключат перенос соответственно

0
27.01.2020, 19:35

Следуя комментарию Peter.O, который является тем, что я хотел выровнять (данные с разделительной вкладкой, TSV), эта фраза работает очень хорошо:

column -t -s $'\t' /Users/me/data.csv | less --chop-long-lines
1
27.01.2020, 19:35

С Миллером(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
0
27.01.2020, 19:35

Теги

Похожие вопросы