如何从文件中删除与定义变量中的字符串完全匹配的行? bash

How to delete a line from a file that matches exactly to a string from a defined variable? bash

我正在编写一个 bash 脚本来以通用格式执行各种操作。最初,脚本首先声明一个设置为文件内容的变量,我们可以将其称为“file1.txt”。

file1.txt 将只包含 1 行,其中 1 行将只有一个整数。预测整数是什么是不可能的。此外,一旦变量设置为该整数,重新读取 file1.txt 以希望将变量重新设置为相同的整数是不可靠的。因此,势在必行,必须在脚本中将整数泛化为变量。

此外,还有另一个文件,我们称之为“file2.txt”,它有很多行,每行都有一个唯一的整数。保证该文件的 1 行且只有 1 行具有与我们设置变量相同的整数。

仅使用设置为该整数的变量,可以使用什么命令从“file2.txt”中删除恰好包含所需整数的行。

我尝试过使用命令 sed 和 auk,但我在将变量用作字符串时遇到了问题。

一个file1.txt的例子:

123

file2.txt 的示例:

456
86454768
35434586745
1231
123
12323
123123

目标是删除与 file2.txt 中的“123”完全匹配的行,在本例中是 file2.txt 中的第 5 行。

我当前的代码:

#This is the only time we can read this file to set the variable
Number="$(cat ./file1.txt)"

#Now we need to remove whatever number $Number is from file2.txt
(unknown command here)

我已经试过awk和sed了,但是没有用。我可能错误地使用了语法。 以下是失败命令的示例:

如有任何帮助,我们将不胜感激!

$ awk 'NR==FNR{a[[=10=]]; next} !([=10=] in a)' file1.txt file2.txt
456
86454768
35434586745
1231
12323
123123

或者如果您在变量中有目标值 number:

grep -vFx "$number" file2.txt