linux – 在大文件中搜索并添加模式
发布时间:2020-12-14 00:04:22 所属栏目:Linux 来源:网络整理
导读:我有一个很大的apache配置文件,在每个虚拟主机部分中,我想添加自己的日志条目.我想知道我是否可以用脚本来做. 我当前的配置文件是这样的; ServerName abc.com some information. … …… 我希望有类似的东西; ServerName abc.com CustomLog "/usr/local/logs
我有一个很大的apache配置文件,在每个虚拟主机部分中,我想添加自己的日志条目.我想知道我是否可以用脚本来做.
我当前的配置文件是这样的; ServerName abc.com some information. … …… 我希望有类似的东西; ServerName abc.com CustomLog "/usr/local/logs/abc.com.log" some information. … …… 有可能通过某种脚本吗?我有很多这样的虚拟主机条目,所以手动更新是不可能的..任何想法? 解决方法
awk可以更简单易用.
awk 'NR==3{print "my log"}1' INPUT_FILE > NR是一个跟踪行号的内置变量. 测试: [jaypal:~/Temp] cat file ServerName abc.com some information. … …… [jaypal:~/Temp] awk 'NR==3{print "my log"}1' file # add log after 2 lines ServerName abc.com some information. my log … …… [jaypal:~/Temp] awk 'NR==4{print "my log"}1' file # add log after 3 lines ServerName abc.com some information. … my log …… [jaypal:~/Temp] var=2 # define a variable which holds the line number you want to print on [jaypal:~/Temp] awk -v line="$var" 'NR==line{print "my log"}1' file ServerName abc.com my log some information. … …… 在评论中,我看到了从匹配模式(ServerName,在此示例中)开始的3行之后添加日志的问题.为此,你可以尝试这样的事情 – awk’/ ServerName / {a = NR; pr??int; next} NR ==(a 3){print $0; print“my log”; next} 1’file [jaypal:~/Temp] awk '/ServerName/{a=NR;print;next} NR==(a+3){print$0;print "my log";next}1' file ServerName abc.com some information. … …… my log (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |