gpt4 book ai didi

linux - 显示行中不常见的部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:57 25 4
gpt4 key购买 nike

您好,我有两个包含路径的文件。我想比较这两个文件并只显示行中不常见的部分。

1.txt:

/home/folder_name/abc

2.txt:

/home/folder_name/abc/pqr/xyz/mnp

我想要的输出:

/pqr/xyz/mnp

我该怎么做?

最佳答案

这段 awk 的工作:

$ awk 'NR==FNR {a[++i]=$0; next}
{
b[++j]=$0;
if(length(a[j])>length(b[j])) {t=a[j]; a[j]=b[j]; b[j]=t}
sub(a[j],"",b[j]);
print b[j]
}' 2.txt 1.txt # or 2.txt 1.txt, it doesn't matter
  • 将第一个文件中的行写入数组a .
  • 将第二行写到b .
  • 交换 a[j]b[j]如果a[j]长于 b[j] (如果较长的文本总是在 b 中,则可能没有必要这样做)。
  • 删除在 a[j] 中找到的部分来自 b[j]并打印 b[j] .

这是一个通用的解决方案;它不假设匹配项位于行的开头,或者一个文件行的内容应该从另一个文件中删除。如果您有能力做出这些假设,则可以简化脚本。

如果一条线上可能出现多次匹配,可以使用gsub而不是 sub执行全局替换。

关于linux - 显示行中不常见的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23948530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com