这已经占用了我大半天的时间,我确信这样的解决方案一定存在(如果没有,那么我正在编写一个程序),但唉,这是问题所在。
我有两个文件,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
不应该存在。相反,它们应该位于不同的行上,并且在左列或右列中有一个空行。
答案1
假设屏幕宽度(-W 选项)是偶数,请尝试以下操作
diff --expand-tabs -W 100 -y hpc.sorted.new.list bduc.sorted.new.list |
awk -v W=100 '(substr($0,W/2,1)=="|")
{left=substr($0,1,(W/2)-1);print left "<";
right=substr($0,(W/2)+1);printf "%" ((W/2)-1) "s>%s\n"," ", right;
next;}1'
答案2
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=${line#::}; printf "$format" "$line" "$line" ;;
:*) line=${line#:}; printf "$format" "" "$line" ;;
*) printf "$format" "$line" "" ;;
esac
done
调整格式以适应。