gpt4 book ai didi

linux - 从 shell 中清理文件

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

我的 shell 技能有点生疏,但我想做的是获取 2 个文件,并根据匹配字段从另一个文件中“删除”一个文件。这是重要的部分,该行的其余部分可以不同,但​​如果关键字段匹配,它将被删除。例如,我的文件是管道分隔的,第二个字段是关键字段。

File 1
------
acme|widg001|green|plant a|<timestamp>
acme|widg102|blue|plant b|<timestamp>
acme|widg002|yellow|plant a|<timestamp

File 2
------
acme|widg001|blue|plant a|<timestamp>
acme|widg701|blue|plant a|<timestamp>

当我从文件 1 中删除文件 2 时,我希望生成的文件包含的是

New File
------
acme|widg102|blue|plant b|<timestamp>
acme|widg002|yellow|plant a|<timestamp>

理想情况下,该解决方案允许我指定 2 个以上的文件,即从文件 1 中删除文件 2、3 和 4。

任何帮助都会很棒!

最佳答案

既然您要求使用 Bash,我决定只使用 Bash 试试看。完全没有外部程序。

IFS='|'
declare -A scrub

while read f1 f2 rest; do
scrub[$f2]=0
done < file2.txt

while read f1 f2 rest; do
if [ ! ${scrub[$f2]} ]; then
echo "$f1|$f2|$rest"
fi
done < file1.txt

这会首先缓存要删除的值,然后遍历第一个文件中的候选值,打印那些未删除的值。它不漂亮,但它是 Bash。

关于linux - 从 shell 中清理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18104971/

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