分享下处理数据分析时,linux shell 两个比较基础的工具
非交互式的字符流编辑器,支持对多文件多行的管道处理
sed [option] 'command' f.txt
sed -n '2,3p' f.txt 输出文件的第2到3行
sed -n '/ok/p' f.txt 输出文件中匹配ok的行
sed -i 's/mac/ok/g' f.txt 替换文件中mac字符为ok g表示全局替换
sed -i '/mac/d' f.txt 删除文件中匹配mac字符的行
sed -i 是直接在原文件上修改
sed -e 不在原文件上修改,输出到终端,可以借助cat 命令 > 输出到文件中,达到和sed -i 一样的效果
awk -F"," '条件{指令}' 包含多个条件时,通过分号隔开.默认的分隔符是空格
awk -F"," 'NF==7{print $0}' 如果读取行的字段数是7则输出此行
awk -F"," 'if(NF==7){print $0}' 条件语句
awk -F"," '{name="jim";age=10;print name}' a.txt 自定义变量
awk -F"," '/keywords/{print $0}' 通过匹配模式过滤
free|awk '/Mem/{print $4}' 查看剩余内存
ifconfig em1|awk '/inet/{print $2}' 查看Ip
uptime |awk '{print $1,$10}' 查看cpu使用率
awk [选项] ' BEGIN{编辑指令 } {编辑指令} END{编辑指令}' 文件
读入第一行文本之前执行(执行1次),一般用来初始化操作
逐行读入文本执行相应的处理(1行执行1次),是最常见的编辑指令块
处理完最后一行文本之后执行(执行1次),一般用来输出处理结果
三者可单独使用,也可同时使用。 所有命令都要写在{}里
awk 'BEGIN{print "hello"}条件{print "a"}END{print "over"}' a.txt
ifconfig em1 |awk 'BEGIN{print "开始a"}/inet/{print $2}END{print "结束o"}'