匹配文件的多行,如果内容不匹配则替换

时间:2015-05-12 08:11:37

标签: regex bash awk sed grep

我有一个特定的文件(sample.txt),内容为:

Doc=True    
Add=123.566.33.8    
This #is a sample File    
Use #for Certain specific functions    
Domain=443.59.43.23

执行某项操作后,此文件的内容会更改:

Doc=True
Add=123.566.33.8
eshfsjfn
sldfhsehfoewjwefn
lsjdnfnfd

现在我需要确保内容始终与第一种情况一样。 因此,我尝试使用具有所有必需行的某个grep命令来初始化初始模式(sample.txt),如果行不匹配,则应将这些行附加到文件sample.txt中。 sample.txt中的内容应始终限于最初显示的内容。我不想创建具有相同内容的其他文件,然后匹配它们。 我想用grep,sed或awk。

1 个答案:

答案 0 :(得分:0)

我发布这个答案,假设你想要对一个标准的awk文件入口检查sample.txt

希望它可以帮到你

awk'BEGIN {
  while (getline < "sample.txt")
  {
    a[$0]
  }
}
{
    if( $0 in a)
    {
        located=true;
    }
    if(!located)
    {
        print "Line changed ->"NR" ->"$0
        print $0 >> "sample.txt"  <-- Printing located line in sample.txt
        located=false;
    }
}' file2.dat