我有以下代码可从文件中删除某些行
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,也可以删除整行?
答案 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