记录一些会用到的sed,grep,awk以及一些正则,省得每次都重新写.
ipv4正则表达式:
^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
ipv6正则表达式
^([\da-fA-F0-9]{1,4}(:{1,2})){1,15}[\da-fA-F0-9]{1,4}$
sed 在匹配行前添加内容
sed -i '/Matched Keyword/i\New Inserted Line' myfile.txt
sed 在匹配行后添加内容
sed -i '/Matched Keyword/a\New Inserted Line' myfile.txt
sed 在匹配行前添加内容,只匹配第一次
sed -i "/Matched Keyword/{x;/^$/s/^/'New Inserted Line'/p;x}" myfile.txt
sed 在匹配行后添加内容,只匹配第一次
sed '0,/Matched Keyword/s//Matched Keyword\nNew Inserted Line/' myfile.txt
sed 在指定内容后添加
sed '/bridge-utils-1.2-/a abc' install.log
通过awk过滤出某个关键字作为grep的参数使用,并把grep的结果高亮显示
awk '{print $1}' /tmp/test.txt | xargs -n 1 -I pattern grep -rn pattern socket_msg.log --color=auto
awk分割多个
awk -F",;|[,;]" '{print $1}' file
awk 列计算
awk 'BEGIN{total=0}{total+=$1}END{print total}'
grep多个,或(or)操作
grep -E '123|abc' filename
grep多个,与(and)操作
grep -E 'pattern1.*pattern2' filename
当然,也可以多次grep
内存前10的进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
通过sed给nagios主机批量添加监控服务
利用sed给可以文件的指定内容后追加内容,实现批量添加,示例以_graphiteprefix load做标记,把要添加的监控配置拆分成一行行添加,注意添加顺序,以及配置文件的路径,要保证添加后书写正确。
sed -i '/_graphiteprefix load/a \ check_command check_nrpe!check_iptables' /usr/local/nagios/etc/hosts/*.cfg
sed -i '/_graphiteprefix load/a \ service_description iptables' /usr/local/nagios/etc/hosts/*.cfg
sed -i '/_graphiteprefix load/a \ host_name 172.16.93.228' /usr/local/nagios/etc/hosts/*.cfg
sed -i '/_graphiteprefix load/a \ use generic-service' /usr/local/nagios/etc/hosts/*.cfg
sed -i '/_graphiteprefix load/a \define service{' /usr/local/nagios/etc/hosts/*.cfg
sed -i '/_graphiteprefix load/a \ }' /usr/local/nagios/etc/hosts/*.cfg