我有四个名为source,correct,wrong和not_found的文件。我试图在bash中编写脚本,其中我从源文件中读取每行,将行存储为变量x,并将其与条件匹配。Bash:从匹配变量的文件中删除一行
如果它通过,那么我需要将该行写入文件名为correct,但是catch在写入到正确前我需要检查变量x当前是否存在于名为wrong的文件中,如果是,请删除它,然后将该行添加到名为correct的文件。
下面我都试过了,但它不修改该文件并没有给我任何输出:
sed -i '/$x/d' ./wrong
我想你的意思是'sed',而不是'send'。如果你使用单引号,就不会有扩展,所以你实际上是在寻找'$ x'(字面上),而不是那个变量的内容。改为使用双引号:'sed -i“/ $ x/d”。/ wrong“ –
感谢您指出错误。这实际上是我的iPad做自动更正。我现在纠正了错误。 –
'sed'不修改文件:从标准输入中读取并在标准输出上写入。您需要将结果放在某处,然后替换原始文件。如:'sed -i'/ $ x/d'./wrong> ./wrong.new && mv ./wrong ./wrong.old && mv ./wrong.new。/ wrong'(如果您想保留旧的副本)。 – fernand0