Кажется, я не нашел пути. Есть ли один лайнер для получения только правой части выхода diff --side-by-side?
Например:
Для этого: diff --side-by-side file1 file2 Я получаю любой из этих двух типов Результаты:
2 Africa | 3 Africa
3 America 3 America
3 Asia 3 Asia
4 Antarctica 4 Antarctica
4 Oceania 4 Oceania
7 Europe 7 Europe
или
3 Africa 3 Africa
3 America 3 America
3 Asia <
4 Antarctica 4 Antarctica
> 4 Asia
4 Oceania 4 Oceania
8 Europe 8 Europe
Как я могу включить их в это:
| 3 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
7 Europe
Как я могу превратить их в это:
3 Africa
3 America
4 Antarctica
> 4 Asia
4 Oceania
8 Europe
Обратите внимание, что я отредактировал исходный вывод diff, чтобы он выглядел оправданным в этом вопросе. Они выглядят выровненными (по столбцам) в терминале, но мне пришлось немного их отрегулировать, чтобы они отображались точно так, как они отображаются в терминале (столбцы аккуратно выровнены), но вы можете реплицировать выходные данные, создавая эти входные файлы:
File1 version 1
2 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
7 Europe
File2 version 1
3 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
7 Europe
File1 version 2
3 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
8 Europe
File2 version 2 [!d12 ]
3 Africa
3 America
4 Antarctica
4 Asia
4 Oceania
8 Europe
На самом деле это столбец RIGHT, хотя он заканчивается слева. Кроме того, это очень уродливое решение, и я уверен, что более умные люди сделают лучше. Но здесь все равно:
$ diff --side-by-side file1 file2 | sed -r 's/[^\t]*\t*(.*)/\1/' | sed -r 's/^ *(\||>|<)\t /\1/'
| 3 Africa
3 America
3 Asia
4 Antarctica
4 Oceania
7 Europe