Различить два файла рядом, новые строки в левом столбце не совпадают

8064
Adam

Это получило добрую половину моего дня, и я уверен, что такое решение должно существовать (если нет, то я его программирую), но, увы, вот в чем вопрос.

У меня есть два файла, hpc.sorted.modules.txtи bduc.sorted.modules.txt. Что я хочу сделать, так это показать параллельное сравнение двух файлов, где любые изменения, которых нет ни в одном файле, находятся в его пустом столбце. Я не хочу diffдобавлять в одну строку с > <или, |если они не совпадают.

Пример вывода: http://pastebin.com/raw.php?i=sr20gyWz используя

diff -y -W 100 hpc.sorted.new.list bduc.sorted.new.list 

Для дальнейшего подчеркивания сути, если вы посмотрите на пример, строка:

bfast/0.7.0a | bedtools/2.6.1 

не должно существовать Скорее, они должны быть в отдельных строках с пустой строкой в ​​левом или правом столбце.

5
Vimdiff вариант? gniourf_gniourf 11 лет назад 0
@gniourf_gniourf Да `vimdiff` или` sdiff` или `comm` или любая другая программа / скрипт - это решение. Однако запуск `vimdiff hpc.sorted.new.list bduc.sorted.new.list` все еще предоставляет мне проблему, о которой я упоминал выше (строка` bfast / 0.7.0a` моего исходного поста) Adam 11 лет назад 0
Я вижу тэг `comm` в вопросе; эта программа не дает вам то, что вы хотите? chepner 11 лет назад 2

2 ответа на вопрос

3

Предполагая, что ширина экрана (опция -W) является четной, попробуйте следующее

diff --expand-tabs -W 100 -y hpc.sorted.new.list bduc.sorted.new.list | awk -v W=100 '(substr($0,W/2,1)=="|") 1' 
1
glenn jackman
format="%-50s | %-50s\n" comm --output-delimiter=: hpc.sorted.modules.txt bduc.sorted.modules.txt | while IFS= read -r line; do  case $line in ::*) line=$; printf "$format" "$line" "$line" ;; :*) line=$; printf "$format" "" "$line" ;; *) printf "$format" "$line" "" ;;  esac done 

Отрегулируйте формат, чтобы удовлетворить.

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