无需落地存储,如何直接对比两段文本内容?如diff 'aaabbbccc' 'aaaccc'
当然有方案!不用把两段文本存到磁盘也能直接完成对比,下面给你几个实用的shell命令技巧,完美解决你的需求:
1. 用进程替换直接对比(最推荐)
这是bash/zsh里最常用的方式,利用<(command)语法把命令输出当作临时“文件”传给diff,完全不会在磁盘留下痕迹:
diff <(echo 'aaabbbccc') <(echo 'aaaccc')
如果需要更清晰的统一格式对比,加上-u参数即可:
diff -u <(echo 'aaabbbccc') <(echo 'aaaccc')
2. 结合变量存储文本后对比
如果你的文本是提前从命令行输出捕获到变量里的,也可以直接把变量内容传给diff:
# 示例:假设这两个变量是你捕获的命令行输出内容 text1='aaabbbccc' text2='aaaccc' diff <(echo "$text1") <(echo "$text2")
3. 直观并排对比用sdiff
如果想要更直观的左右并排显示差异,可以用sdiff命令,用法和diff完全一致:
sdiff <(echo 'aaabbbccc') <(echo 'aaaccc')
原理说明
这些方法本质上是利用shell的进程替换特性,它会创建临时的匿名管道/文件描述符来传递文本内容,不会在磁盘上生成实际的文件,对比完成后这些临时资源会自动被系统回收,完全符合你“不存磁盘”的要求。
内容的提问来源于stack exchange,提问作者MakoBuk
相关产品推荐
相关产品推荐

