gpt4 book ai didi

linux - 使用 bash 从另一个文件中存在的文件中删除值

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:28 26 4
gpt4 key购买 nike

我有一个制表符分隔的文件 A,每行包含多个值:

A   B   C   D   E
F G H I
J K L M
N O P
Q R S T
U V
X Y Z

我想从文件 A 中删除包含在以下文件 B 中的元素:

A   D
J M
U V

生成文件 C:

B   C   E
F G H I
K L
N O P
Q R S T
X Y Z

有没有办法使用 bash 来做到这一点?

最佳答案

如果条目不包含任何 sed 的特殊符号(例如 ()[]/\.*?+),您可以使用以下命令:

mapfile -t array < <(<B tr '\t' '\n')
(IFS='|'; sed -r "s/(${array[*]})\t?//g;/^$/d" A > C)

此命令将文件 B 读入数组。从数组中构造一个 sed 命令。 sed 命令将过滤掉所有条目并删除空行。

在您的示例中,构造的命令...

sed -r 's/(A|D|J|M|U|V)\t?//g;/^$/d' A > C

...生成如下文件C(空格实际上是制表符)

B   C   E
F G H I
K L
N O P
Q R S T
X Y Z

关于linux - 使用 bash 从另一个文件中存在的文件中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405360/

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