You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AIX的ksh环境中如何计算两个文件列表的差异

在AIX ksh中获取list1独有的文件列表

以下是几个通用的解决方案,不依赖文件扩展名:

方法1:使用grep(最直接的方式)

利用grep的固定字符串匹配和反向筛选功能,直接找出list1中不在list2里的行:

grep -Fxvf list2 list1

参数说明:

  • -F:将匹配模式视为固定字符串,避免正则表达式干扰
  • -x:仅匹配整行内容,防止部分匹配导致错误结果
  • -v:反向匹配,输出不匹配的行
  • -f:从list2文件中读取匹配模式

方法2:使用comm命令(适合有序文件)

comm专门用于对比两个有序文件的差异,通过参数控制只输出list1独有的内容:
如果你的ksh支持进程替换,可以直接用:

comm -23 <(sort list1) <(sort list2)

如果不支持进程替换,先排序到临时文件再处理:

sort list1 > sorted_list1
sort list2 > sorted_list2
comm -23 sorted_list1 sorted_list2
rm sorted_list1 sorted_list2

参数说明:-23表示不显示list2独有的列(第2列)和两者共有的列(第3列),只保留list1独有的列(第1列)

方法3:使用awk(通用无序文件处理)

用awk数组存储list2的内容,再遍历list1输出不在数组中的行:

awk 'NR==FNR { arr[$0] = 1; next } !arr[$0]' list2 list1

逻辑说明:

  • 处理第一个文件list2时,将每行内容作为键存入数组arr
  • 处理第二个文件list1时,输出不在arr中的行

内容的提问来源于stack exchange,提问作者emfi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:29:58