linux - search and add a pattern in a big file -



linux - search and add a pattern in a big file -

i have big apache configuration file , in each of virtualhost sections, want add together own log entry. wondering if can script.

my current configuration file this;

servername abc.com information. … ……

and want have like;

servername abc.com customlog "/usr/local/logs/abc.com.log" information. … ……

is possible sort of script? have lots , lots of such virtualhost entries, manually updating impossible.. ideas?

awk can much simpler use.

awk 'nr==3{print "my log"}1' input_file nr built-in variable tracks line numbers. you can utilize -v , variable name pass values dynamically instead of hard-coding in script. eg. awk -v line="$var" 'nr==line{print "my log"}1' input_file. in case, line awk variable , $var can bash variable defined outside of awk's scope. test: [jaypal:~/temp] cat file servername abc.com information. … …… [jaypal:~/temp] awk 'nr==3{print "my log"}1' file # add together log after 2 lines servername abc.com information. log … …… [jaypal:~/temp] awk 'nr==4{print "my log"}1' file # add together log after 3 lines servername abc.com information. … log …… [jaypal:~/temp] var=2 # define variable holds line number want print on [jaypal:~/temp] awk -v line="$var" 'nr==line{print "my log"}1' file servername abc.com log information. … ……

in comments saw question of adding log after 3 lines starting matched pattern (servername, in example). can seek -

awk '/servername/{a=nr;print;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 information. … …… log

linux perl shell unix awk

Comments

Popular posts from this blog

How do I check if an insert was successful with MySQLdb in Python? -

delphi - blogger via idHTTP : error 400 bad request -

postgresql - ERROR: operator is not unique: unknown + unknown -