Почему столбец управляет не, выравнивают столбцы правильно?

Установка "sl". Choo choo! http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html

      ====        ________                ___________
  _D _|  |_______/        \__I_I_____===__|_________|
   |(_)---  |   H\________/ |   |        =|___ ___|      _________________ 
   /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
  |      |  |   H  |__--------------------| [___] |   =|                        |
  | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
  |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
__/ =| o |=-~~\  /~~\  /~~\  /~~\ ____Y___________|__|__________________________|_
 |/-=|___||    ||    ||    ||    |_____/~\___/          |_D__D__D_|  |_D__D__D_|
  \_/      \__/  \__/  \__/  \__/      \_/               \_/   \_/    \_/   \_/

"SL (Паровоз) натыкается на Ваш терминал при вводе "sl", поскольку Вы означали вводить 'ls'. Это - просто команда шутки, и не полезное вообще. Поместите двоичный файл в/usr/local/bin".

6
13.04.2017, 15:36
5 ответов

При вызове без любых опций, column делает каждый разграничил строки, выравниваются к ближайшему СТОЛБЦУ ПОЗИЦИИ ТАБУЛЯЦИИ. В терминале, который обычно находится на каждом 8-м символьном столбце.. Взгляните на этот пример:

Создайте файл (ztxt) содержа некоторый символ табуляции \t разграниченные строки, распространенные по 3 строкам, которые заканчиваются символом новой строки \n:

aaa1\taaaaaaaaaaaaaa2\taaaaaaaaaaaaaaaaaaa3\taaa4
bbbbbbb1\tbbb2\tbbb3
ccc1\tccc2

Вывод: column ztxt - отлично выровненный к ближайшей ПОЗИЦИИ ТАБУЛЯЦИИ

aaa1    aaaaaaaaaaaaaa2 aaaaaaaaaaaaaaaaaaa3    aaa4
bbbbbb1 bbb2    bbb3
ccc1    ccc2
|       |       |       |       |       |       |
|-------|-------|-------|-------|-------|-------|

Для выравнивания LSH каждого последовательного поля к тому выше его необходимо использовать -t опция, например. column -t ztxt

aaa1     aaaaaaaaaaaaaa2  aaaaaaaaaaaaaaaaaaa3  aaa4
bbbbbb1  bbb2             bbb3
ccc1     ccc2

Если все Ваши данные находятся в одном длинном потоке без каких-либо повреждений новой строки, Вы можете uss фильтр представлять их; например, каждые 4 поля. sed может сделать это с этой командой.

sed -re 's/(([^\t]*\t){3}[^\t]*)\t/\1\n/g' 

По умолчанию, column команда объединит несколько смежных разделителей в единственный разделитель.. Обслуживать это в sed фильтр, этому также нужно:

sed -re 's/\t+/\t/g;' 

Так команда для разделения непрерывного потока разграниченных вкладкой строк, как каждая 4-я строка:

<ztxt sed -re 's/\t+/\t/g;s/(([^\t]*\t){3}[^\t]*)\t/\1\n/g' | column -t  

Вывод такого входного потока contionuous (использование исходного демонстрационного входа, но измененный путем замены исходных новых строк символами табуляции - это должно все еще сохранить свое запаздывание \n):

aaa1      aaaaaaaaaaaaaa2  aaaaaaaaaaaaaaaaaaa3  aaa4
bbbbbbb1  bbb2             bbb3                  ccc1
ccc2
10
27.01.2020, 20:24
  • 1
    любая идея, почему это ls * -1 |column -t сбои ужасно? в моем случае, с помощью столбца или нет, дают тот же вывод (на один столбец). Я пытался использовать column в течение долгого долгого времени и это никогда не работало правильно :(. Интересно, существуют ли некоторые column альтернатива, что мы можем зафиксировать ширину столбца даже с потерей отображенных данных, чтобы наконец иметь фактический симпатичный взгляд и легкий считать вывод. Моя последняя попытка будет состоять в том, чтобы кодировать некоторый сценарий, чтобы сделать весь этот:/ –  Aquarius Power 02.12.2015, 17:34
  • 2
    и это не являются принятым ответом потому что..? большое подробное сообщение. –  underscore_d 28.01.2018, 22:09
  • 3
    @underscore_d, но Вы попробовали это? опция-t распечатывает один отдельный столбец, таким образом, это не работает, если файл уже не находится в столбцах для начала. –  mchid 04.03.2018, 06:48

Если ls вывод искажен, он указывает, что существуют непечатаемые символы в одних или нескольких именах файлов. Я поэтому рекомендую всегда использовать опцию -q с ls.

Любые непечатаемые символы будут затем распечатаны как вопросительный знак.

Поэтому попробуйте:

 ls -Cq
0
27.01.2020, 20:24
  • 1
    ls вывод не был искажен; это было это по умолчанию column выравнивался к позициям табуляции, не в столбцах. –  underscore_d 28.01.2018, 22:14

Проблема со столбцом состоит в том, что он разделяет на \s +, я не вижу, как заставить его разделить на единственной вкладке. Я записал этот намного более гибкий сценарий для решения этой проблемы, которую кто-либо свободен использовать:

http://itmat.greg.s3.amazonaws.com/display.pl.gz

Вот полное использование:

  --------------------------------------------------------------------------
 | This script displays tab delimited text in properly aligned columns.     |
 |                                                                          |
 | Usage: perl display.pl  [num lines] [options]                      |
 |                                                                          |
 | Where  is tab delimited.                                           |
 |                                                                          |
 | If  is followed by a positive integer N, only the first N lines    |
 | will be returned.                                                        |
 |                                                                          |
 | If lines are long, this script works bests if piped to "less -S".        |
 |                                                                          |
 | [options]                                                                |
 |                                                                          |
 | -noheader :  A header line is assumed by default.                        |
 |                                                                          |
 | -nodots   :  By default if a column is wide and an entry in that column  |
 |              is short, dots are put after it to help line things up.     |
 |              Use this option to just print spaces, no dots.              |
 |                                                                          |
 | -dotcols  :  Use this to specify specific columns to have dots     |
 |                    (see the -nodots option).   must be a comma     |
 |                    separated list of positive integers w/o whitespace.   |
 |                                                                          |
 | -cols  :  Use this to specify a subset of columns to output.       |
 |                  is a comma separated list of positive integers    |
 |                 and/or spans of positive integers.  Examples of valid    |
 |                 lists are: 4,6,12 or 4-10 or 1-4,12,15,4-7.  Columns     |
 |                 can be repeated and don't have to be in numerical order. |
 |                                                                          |
 | NOTE: This script was hacked from a much more complicated script, so     |
 | the code is full of all kinds of irrelevant stuff.                       |
  --------------------------------------------------------------------------
0
27.01.2020, 20:24
  • 1
    "Я не вижу, как заставить его разделить на единственной вкладке". Что, делает -s'[tab]' не работают на Вас? Где, как обычно, [tab] средства или вводят литеральную вкладку в Вашем сценарии или нажимают Ctrl+V, Tab при приглашении оболочки. непечатаемые символы –  underscore_d 28.01.2018, 22:12
  • 2
    Можно отправить сценарий здесь так, чтобы люди могли скопировать и вставить сценарий. Мы понятия не имеем, что находится в сжатом файле, таким образом, это является теневым. Большую часть времени люди отправляют сценарии в ответах. –  mchid 04.03.2018, 06:54

Показать непечатаемые символы (как C управляющие коды каждый раз, когда возможный) в Вашем ls произведите Вас, также может использовать -b опция к ls команда:

ls -Cb | grep -v '\.pyc$' | column -t
0
27.01.2020, 20:24
  • 1
    не релевантны здесь; проблемой является выравнивание, и это выключено по причинам проголосовавший вершине объясненный ответ, не из-за управления или странно расположенных с интервалами символов в именах файлов. –  underscore_d 28.01.2018, 22:14

Поскольку несколько разделителей укусили. Раздражающе-n опция только доступна в Debian, который обработал несколько разделителей.

column -t -n <file>
1
27.01.2020, 20:24

Теги

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