我有一个包含多个行的文件,其中包含IP地址和之后的变量......
例如
server 127.0.0.1:80 VARTOREPLACE
server 127.1.0.1:80 VARTOREPLACE
server 127.2.0.1:80 VARTOREPLACE
我怎样才能扫描文件并匹配ip模式,然后将该行匹配的var设置为特定的字符串.....示例
127.*.*.*
将VARTOREPLACE
替换为NEWVAR1
127.1.*.*
将VARTOREPLACE
替换为NEWVAR2
127.2.*.*
将VARTOREPLACE
替换为NEWVAR3
我已经尝试了
sed -i '/:127.0 /s/VARTOREPLACE/NEWVAR1/' file
任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试以下命令 -
sed '/127.0.0/s/VARTOREPLACE/NEWVAR1/g;/127.1.0/s/VARTOREPLACE/NEWVAR2/g;/127.2.0/s/VARTOREPLACE/NEWVAR3/g'
server 127.0.0.1:80 NEWVAR1
server 127.1.0.1:80 NEWVAR2
server 127.2.0.1:80 NEWVAR3
答案 1 :(得分:0)
尝试这个简单的命令:
sed -i -e '/127.0/s/VARTOREPLACE/NEWVAR1/' file -e '/127.1/s/VARTOREPLACE/NEWVAR2/' file
虽然如果还有很多其他变数我也不会推荐它。 您应该有另一个文件为您执行某种vlookup
答案 2 :(得分:0)
@Eric Cox:尝试一下awk解决方案。
var match = new BsonDocument
{
{
"$project",
new BsonDocument
{
{"PartData.Description", 1 }
}
}
};
var pipeline = new[] { match };
var aggregationCursor = parts.Aggregate<Part>(pipeline);
var query = aggregationCursor
.ToEnumerable()//needed to perform AsQueryable
.AsQueryable()//Asking for data elements
}
检查第二个字段是否等于您在帖子中提供的任何范围(将[0-9]更改为*也可能包含字符等),如果条件为$ 0则为$ 2然后更改$ NF(最后一个字段)的值为&#34; NEWVAR1&#34;等然后打印新格式化的行并放置下一个语句以跳过所有进一步的语句。最后提到1如果没有条件匹配则打印行,那么它将只打印该行。