从txt文件中删除确切名称

时间:2019-04-16 14:26:15

标签: bash

我有以下代码可从文件中删除某些行

ret=$(grep -m2 "$var" log.txt | tail -n1 ) 
 mv $var $ret                          
 grep -F -v $var log.txt > log.txt.tmp        
 mv log.txt.tmp log.txt     

我的日志文件如下

2.txt  
/home/etc/2.txt   

基本上是文件名及其原始位置

我想还原文件,而我的程序确实做到了,但我也想 从log.txt文件中删除文件名及其位置

现在上面的代码可以工作了,但是例如删除了所有实例

它将删除2.txt和正常的路径,但是如果我有一个名为22.txt的文件,则它是一个完全不同的文件。我需要它仅删除2.txt,但似乎要删除其中带有“ 2.txt”的行。

是否可以仅删除2.txt,并且由于目录中包含/2.txt,也可以删除整行?

1 个答案:

答案 0 :(得分:0)

因此,在您的log.txt文件中,您想要:

  • 单行匹配2.txt
  • 匹配2.txt,并加上一些路径。

您可以在grep中执行此操作:

# match all but lines beginning with $var, so 2.txt
grep -F -v "^$var" log.txt > log.txt.tmp        

# match all but lines containing "/$var", so "/2.txt"
grep -F -v "/$var" log.txt.tmp > log.txt