$ 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
, а также требует реализации GNUdate
.Небольшое пояснение может быть по порядку:
Подстановка процесса
более или менее создает временный файл, содержащий выходные данные команды в круглых скобках ( фактически 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
в качестве первого столбца и выходными данными второговырезать
в качестве других столбцов.
Возможно Midnight Commander или аналогичная программа делает то, что вы хотите? На окно терминала можно наложить два списка файлов, есть сочетания клавиш, но можно еще переключиться на полноценную оболочку.
Вы можете использовать PID оболочки 1 и информацию о процессе (CWD) для обновления ls
в оболочке 2.
оболочка 1:
$ echo $$
24678
оболочка 2:
$ watch ls /proc/24678/cwd/
Теперь вы можете используйте cd
в оболочке 1, и представление в оболочке 2 будет обновляться в оболочке 2 (по умолчанию каждые 2 секунды).
Хороший трюк: вы можете использовать watch -d
, чтобы выделить различия между последовательными обновлениями (создание/удаление файлов и т. д.)