sed 替换部分 linux 路径

问题描述 投票:0回答:1

我有 2 个文本文件需要在 Linux 环境中进行比较。它们来自两个不同的来源。它们都包含它们的源路径,因此比较将失败。 然而,只有路径的起点不同:在某些时候,路径的终点必须相同。

file1 包含:

file = import('/source-1/random/path/to/the/file/work/source/file.txt' , "corner")

file2 包含:

file = import('/s_2/file/work/source/file.txt' , "corner")

所以我想找到第一个 / 和 work 之间的任何内容,并将其替换为 * 例如,所以最后我得到:

在文件1中:

file = import('*/w/source/file.txt' , "corner")

在文件2中:

file = import('*/w/source/file.txt' , "corner")

我的 diff 不会再因此而失败。

我尝试了很多方法,但没有任何效果:(这就是为什么我现在请求你的帮助:) 我最好的尝试没有给任何东西:

([\/][a-zA-Z09]*[+-_]*[a-zA-Z0-9]*)*/work

删除整行会破坏比较文件的目的:(不过,这会更容易。我需要删除 linux 路径的第一部分(从第一个 / 到单词“work”)。它并不每次都相同文字字符串,除了“work”和“work”后面的任何内容应该相同

非常感谢您的大力帮助:)

linux sed
1个回答
0
投票
awk '
        { key=$0; sub("/.*/work/","*/w/",key) }
        NR==FNR {f1key=key; next }
        f1key != key { print "<", f1key ORS ">", key; exit 1 }
' file1 file2
© www.soinside.com 2019 - 2024. All rights reserved.