sed
sed是Stream Editor字符流编辑器,可对文件实现快速增、减、删、改、查操作。
【语法格式】
sed [选项] [sed内置命令字符] [输入文件]
sed命令的参数选项及说明:
-n 取消默认的sed的输出,常与sed内置命令p连用
-i 直接修改文件内容,而不是输出到终端
sed常用内置命令字符的功能说明:
na 表示在第n行后插入文本
ni 表示在第n行前插入文本
nd 表示删除第n行文本
np 表示打印第n行文本,常与-n参数选项连用
s/regexp/replacement/g 匹配regexp部分内容,用replacemen替换regexp匹配到的内容,g表示全局替换
其中‘/’可以用任意不易混淆的字符替换,例如!,@,#,%等都可以
N; 表示不会清空模式空间的内容,从输入文件中读取下一行数据,追加到模式空间中,两行数据以换行符\n连接
在指定文本后插入内容
sed -i '/\[database]/a connection = mysql+pymysql://keystone:keystone@controller/keystone' /etc/keystone/keystone.conf
awk
awk不仅是linux命令,还是编程语言,可以处理数据和生成报告。
【语法格式】
awk [参数] '条件{动作}' 文件
awk命令的常用功能
1.指定分隔符显示某几列:
awk -F "GET|HTTP" '{print $2} access.log以GET|HTTP为分隔符,直接取出显示出日志文件的url这一列
awk -F "分隔符"分隔符常用正则表达式表示
2.通过正则表达式取出你想要的内容:
awk '$6~/Failed/{print $11}' /var/log/secure分析生产环境中的日志找出谁在破解用户的密码
3.显示出某个范围内的内容
awk 'NR==20,NR==30' filename显示文件的20达到30行
4.通过awk进行统计计算
awk '{sum+=$0}END{print sum}' ett.txt计算总和
5.awk数组计算与去重
awk '{array[$1]++}END{for(key in array)print key,array[key]}' access.log对日志进行统计与计数
array表示数组名,$1表示统计内容并作为下标,用END模式输出最终结果
gsub("替换对象","替换内容",哪一列)或者gsub(/替换对象/,"替换内容",哪一列)
当省略最后一部分‘哪一列’时,代表替换整行内容