средство просмотра окна терминала для файлов с разделением табуляцией в *отклоняет?

Я работаю с большим количеством разграниченных вкладкой файлов данных с переменными столбцами неопределенной длины.

Как правило, способ, которым люди просматривают эти файлы, состоит в том, чтобы снизить их от сервера до их Windows или машины Mac, и затем открыть их в Excel. Это, конечно, полнофункционально, позволяя фильтрацию и другие хорошие опции. Но иногда, Вы просто хотите посмотреть на что-то быстро на командной строке.

Я записал базовую утилиту для отображения первого<n>строки файла как так:

---строка 1---
1: {заголовок 1} 2: {заголовок 2} 3:...

---строка 2---
1: {данные 1} 2: {данные 2} 3:...

Это является, очевидно, очень хромым, но этого достаточно для передачи по каналу через grep или фигуру который столбцы заголовка использовать "сокращение-f" на.

Существует ли *, отклоняют - базирующееся средство просмотра для терминального сеанса, который отобразит строки и столбцы файла с разделением табуляцией и позволит Вам переместить окно просмотра через файл или иначе посмотреть на данные?

Я не хочу писать это сам; вместо этого, я просто сделал бы reformatter, который заменит вкладки пробелами для дополнения, таким образом, я мог открыть файл в emacs и видеть выровненные столбцы. Но если бы уже существует инструмент там, чтобы сделать что-то вроде этого, это было бы большим!

(Или, я мог просто жить с Excel.)

5
задан 11.05.2010, 23:16

4 ответа

Существует названная электронная таблица текстового режима Unix sc который может работать на Ваше использование. Необходимо будет, вероятно, передать файл через psc преобразовать его в формат файла это sc использование.

7
ответ дан 07.12.2019, 16:45

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

vim some_file.csv

Затем установите позицию табуляции на некоторое высокое значение, таким образом, столбцы будут выстроены в линию. Введите:

:set tabstop=20

Если строки становятся слишком длинными, необходимо также выключить обертывание, таким образом, можно прокрутить боком вместо того, чтобы перенести текст:

:set nowrap

Перемещение: существует несколько путей, но большинство простых как клавиши со стрелками и pgup/pgdown/home/end будет работать. Некоторые другие полезные команды перемещения:

CTRL+U: move half screen up
CTRL+D: move half screen down
gg: move to top
G: move to bottom

Можно искать текст тем же путем, Вы сделали бы в человеке:

/regular_expression (search forward)
?regular_expression (search backward)

Затем тип "n", чтобы найти, что следующее соответствие и "N" находят предыдущий.

Можно также переместиться по использованию мыши, если терминал поддерживает его, и Вы вводите:

:set mouse=a

Править: Я забыл, что можно выйти с:

:q (if you haven't changed the text)
:wq (to save it before quitting)
:q! (to abandon changes)
8
ответ дан 07.12.2019, 16:45

Существует другое решение, которое включает сценарий. Сохраните этот сценарий к, например, tab.pl.

#!/usr/bin/perl

use strict;

my @lines;
# first read the file into a list of lists
while (<>)
{
    chomp; # remove the newline from the end of the line
    my @fields = split("\t");
    push @lines, \@fields;
}
my @lengths;
# calculate the maximum lengths of each field
foreach (@lines)
{
    for (my $i = 0; $i < scalar @$_; $i++)
    {
        $lengths[$i] = $lengths[$i] < length $$_[$i] ? length $$_[$i] : $lengths[$i];
    }
}
# now print the text aligned
foreach (@lines)
{
    for (my $i = 0; $i < scalar @$_; $i++)
    {
        print $$_[$i], " " x ($lengths[$i] - length ($$_[$i]) + 1);
    }
    print "\n";
}

Затем просто тип:

perl tab.pl some_file.csv | less

Или сохраните результат в файл и откройте его со своим любимым текстовым редактором:

perl tab.pl some_file.csv > result.txt
6
ответ дан 07.12.2019, 16:45

pr позволяет Вам разворачивать вкладки до данного количества пробелов с -e. Не забывайте передавать -t -T так, чтобы это на самом деле не форматировало целую страницу для печати.

1
ответ дан 07.12.2019, 16:45

Теги

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