bash - 比较文件 pooutput.txt 文件和 apdca-sd-rt01.txt 文件找到在 apdca-sd-rt01.txt 中找到的确切行,然后打印 ok else not ok
问题描述
2个文件进行比较。pooutput.txt & apdca-sd-rt01.txt 是文件。
pooutput.txt 包含:
323 Po323(SU) Eth LACP Eth1/14(P) Eth2/14(P)
345 Po345(SU) Eth LACP Eth1/15(P) Eth2/15(P)
367 Po367(SU) Eth LACP Eth1/16(P) Eth2/16(P)
apdca-sd-rt01.txt 包含:
323 Po323(SU) Eth LACP Eth1/14(P) Eth2/14(P)
345 Po345(SU) Eth LACP Eth1/15(P) Eth2/15(P)
367 Po367(SU) Eth LACP Eth1/16(P) Eth2/16(D)
所以预计在最后一行打印“Not Ok”因为是 Eth2/16(D) 但它应该是 Eth2/16(P)
diff , comm -23 , 一些我已经尝试过的 grep 类型
试过这个
[ $(grep -cxFf pooutput.txt <(sort -u apdca-sd-rt01.txt)) = $(sort -u pooutput.txt | wc -l) ] &&
echo ok ||
echo not ok
试过这个
if grep -ow '323 Po323(SU) Eth LACP Eth1/14(P) Eth2/14(P)
345 Po345(SU) Eth LACP Eth1/15(P) Eth2/15(P)
367 Po367(SU) Eth LACP Eth1/16(P) Eth2/16(P)' "apdca-sd-rt01.txt";then
echo Ok
else
echo Not OK
fi
diff -U $(wc -l < pooutput.txt) pooutput.txt apdca-sd-rt01.txt | sed -n 's/^-//p' > fileC
diff -Ebv --new-line-format="" --unchanged-line-format="" <(sort pooutput.txt) <(sort apdca-sd-rt01.txt)
但是对于从 P 到 D 的如此小的变化,它有帮助
预期应该是“Not ok”,因为行不完全匹配。上面的一些都不能正常工作。
请帮忙
解决方案
您的第一个示例为我打印出“不好”。但我会保持简单,例如:
! diff pooutput.txt apdca-sd-rt01.txt > /dev/null && echo "NOT OK"
如果 diff 在提供的两个文件中发现差异,这将打印“NOT OK”。
推荐阅读
- mfc - MFC:是否有关于如何使用 CMFCToolBar 的大图标功能的示例或说明?
- visual-studio - MSBuild:根据目标中更新的属性设置预处理器定义
- ffmpeg - Windows 媒体播放器的 Wav 文件持续时间与 ffmpeg 不同
- macos - 从终端,在 safari 的新背景选项卡中打开本地 html 文件
- python - 提高遍历数据框的效率
- python - 构建特征交叉时的 Tensorflow Python 错误 - “所有键必须是字符串或分类列,除了 HashedCategoricalColumn。”
- python - Python SqlAlchemy 更新语句
- c++ - C++ 找不到成员
- html - 为什么 Chrome 和 Safari 渲染不正确
和 - android - 如何在 Android 上保存和比较 2 个指纹