Показывать список файлов в текущем каталоге во время навигации? (Экран, Linux)

$ cut -d' ' -f 2- file2 | paste file1 -

Вырезание удалит первый столбец из file2 ( -f 2- означает «только поля вывода (столбцы) 2 и далее»). Результат будет передан в paste , которая поместит содержимое file1 в первый столбец. - в команде paste является заполнителем для всего, что доставляется на стандартный ввод (в данном случае канал из cut ).

Шаг за шагом:

$ cut -d' ' -f 2- file2
10.2317  79.1638   6.0  26.7  20.9   0.8  14.0  98.6
10.2317  79.1638   5.6  26.5  20.8   1.9  13.6  98.0
10.2317  79.1638   7.5  27.7  20.8   0.1  15.8  96.4
10.2317  79.1638   8.1  26.0  19.6   0.0  15.5  94.1

$ cut -d' ' -f 2- file2 | paste file1 -
01/01/2007      10.2317  79.1638   6.0  26.7  20.9   0.8  14.0  98.6
02/01/2007      10.2317  79.1638   5.6  26.5  20.8   1.9  13.6  98.0
03/01/2007      10.2317  79.1638   7.5  27.7  20.8   0.1  15.8  96.4
04/01/2007      10.2317  79.1638   8.1  26.0  19.6   0.0  15.5  94.1

Команда cut ожидает ввода, разделенного табуляцией, но, поскольку я скопировал и вставил ваш вопрос, он разделен пробелами.Если исходные данные фактически разделены табуляцией, удалите -d '' из команды cut .

Команда paste по умолчанию добавит вкладку между столбцами 1 и 2. Если вам нужен пробел, используйте paste -d '' file1 - .

В другом вопросе был задан вопрос, как использовать здесь уже существующую дату в file2 и полностью отказаться от первого файла.

В итоге я получил

$ paste <( date -f <( cut -d ' ' -f 1 file2 ) +"%d/%m/%Y" ) \
        <( cut -d ' ' -f 2- file2 )
01/01/2007      10.2317  79.1638   6.0  26.7  20.9   0.8  14.0  98.6
02/01/2007      10.2317  79.1638   5.6  26.5  20.8   1.9  13.6  98.0
03/01/2007      10.2317  79.1638   7.5  27.7  20.8   0.1  15.8  96.4
04/01/2007      10.2317  79.1638   8.1  26.0  19.6   0.0  15.5  94.1

Обратите внимание, для этого требуется оболочка, которая понимает подстановку процесса ( ),например bash или ksh , а также требует реализации GNU date .

Небольшое пояснение может быть по порядку:

Подстановка процесса более или менее создает временный файл, содержащий выходные данные команды в круглых скобках ( фактически FIFO в / dev / fd ). Таким образом, вся команда будет проходить через два этапа подстановки:

paste <( date -f output_of_cut1 +"%d/%m/%Y" ) \
      output_from_cut2

date -f filename будет читать даты в файле filename и форматировать каждую из них в соответствии с заданной строкой формата.

Затем:

paste output_from_date output_from_cut2

, который склеит столбцы с выходными данными из date в качестве первого столбца и выходными данными второго вырезать в качестве других столбцов.

1
29.04.2017, 11:01
2 ответа

Возможно Midnight Commander или аналогичная программа делает то, что вы хотите? На окно терминала можно наложить два списка файлов, есть сочетания клавиш, но можно еще переключиться на полноценную оболочку.

1
27.01.2020, 23:19

Вы можете использовать PID оболочки 1 и информацию о процессе (CWD) для обновления ls в оболочке 2.

оболочка 1:

$ echo $$
24678

оболочка 2:

$ watch ls /proc/24678/cwd/

Теперь вы можете используйте cd в оболочке 1, и представление в оболочке 2 будет обновляться в оболочке 2 (по умолчанию каждые 2 секунды).

Хороший трюк: вы можете использовать watch -d, чтобы выделить различия между последовательными обновлениями (создание/удаление файлов и т. д.)

3
27.01.2020, 23:19

Теги

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