Просто примечание :, чтобы получить вывод «сторона -на сторону -», вам нужно «--цвет=всегда». Вы также можете разбить его на страницы с меньшим количеством страниц и сохранить цветной вывод :
.diff -y --color=always file1 file2 | less -R
И еще один совет: :старайтесь оставить переключатель «--color=always» в конце. Причина? С помощью dmesg из утилиты -linux 2.27.1:
dmesg --human --color=always | less -R # works
dmesg --color=always --human | less -R # doesn't work
СPerl
:
perl -pale '$"="\t";
chomp(@A = map { $_-1 } grep { /^[1-9]\d*$/m } <STDIN>) if $. == 1;
$_ = @A ? "@F[@A]" : last;
' File1 < File2
Результат:
2 4 5
25 2 4
12 15 17
Пояснение:
Дайте файлу номеров столбцов (один номер столбца на строку )в стандартном вводе для утилиты perl и файл данных в командной строке Perl.
Установите для конкатенатора элементов массива($"
)значение TAB
, чтобы все поля вывода были разделены табуляцией -.
Выйти из программы, как только обнаружим, что массив столбцов для печати @A
пуст. Он содержит только те строки из File2
, которые содержат одно положительное целое число в строке. любая другая комбинация отклоненный.
Попробуйте также
awk '
FNR == NR {COL[NR] = $1 # get column numbers from file2
MX = NR # retain max line No. in file2
next
}
{for (i=1; i<=MX; i++) printf "%s%s", $(COL[i]), (i==MX)?ORS:OFS
# print those columns, and field
# or line separator
}
' file2 file1
2 4 5
25 2 4
12 15 17