如果在另一个文件中找到密钥则替换子字符串

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

我有与分散在不同目录中的人相关的文件。 我可以通过主文件找到它们。 其中一些需要被拉到我的工作目录中。 提取它们后,我需要更新主文件以反映更改。 为了跟踪哪些文件被移动,我将这个人的名字记录在另一个文件中。

master.txt

Bob    "/home/a/bob.txt"
Linda  "/home/b/linda.txt"
Joshua "/home/a/josh.txt"
Sam    "/home/f/sam.txt"

移动.txt

Linda
Sam

master.txt的预期结果

Bob    "/home/a/bob.txt"
Linda  "/workingdir/linda.txt"
Joshua "/home/a/josh.txt"
Sam    "/workingdir/sam.txt"

我已经尝试过了

grep -f moved.txt master.txt | sed "s?\/.*\/?"`pwd`"\/?"
grep -f moved.txt master.txt | sed "s?\/.*\/?"`pwd`"\/?" master.txt
grep -f moved.txt master.txt | sed -i "s?\/.*\/?"`pwd`"\/?"

更复杂的是,这将作为 python 脚本的一部分执行,因此它需要能够在 subprocess.run(cmd) 中工作。

regex linux string sed
1个回答
0
投票

我会做什么:

$ grep -f moved.txt master.txt | sed -E 's@/.*(/[a-zA-Z]+\.txt)@/workdir\1@'
Linda  "/workdir/linda.txt"
Sam    "/workdir/sam.txt"
© www.soinside.com 2019 - 2024. All rights reserved.