grep-awk-seq快速上手文档

grep-awk-seq快速上手文档




grep 正则  文件内容查找


特定字符匹配
grep '1' /usr/local/logs


范围内字符:单个字符[]
grep '[a-zA-Z]' /usr/local/logs


空行
grep '^$' /usr/local/logs


匹配包含  e f
grep 'e.*f' /usr/local/logs





seq   文本处理(增 删 替)  不会改变原文件内容  除非重定向 > 或 >>  (原理一行一行写入缓存再处理)
命令行格式
sed [options] 'command' file(s)   或  |sed [options] 'command'  (处理从 |  或  files)
options: -e  -n(打印相关的行)
command: 待定位(正则)+sed命令(操作)
sed 'p' /usr/local/logs      重复数据
sed -n 'p' /usr/local/logs   正常数据
定位一行输入出   x(行号);  /正则patten/ 
nl /usr/local/logs | sed -n '10p'    (nl 显示行号  显示第10行)
nl /usr/local/logs | sed -n '/foundByte/p'    (nl 显示行号)
定位几行
nl /usr/local/logs | sed -n '10,20p'   (nl 显示行号  显示第10-20行)
nl /usr/local/logs | sed -n '/first/,/last/p'    (nl 显示行号 显示开始first行 结束last)
!p  定位取反

1~20 每次间隔20输入出

q:退出sed
sed -n '10q'    11不执行了
sed -n '/foundByte/q'  foundByte后面不执行了  

基本命令操作
-a(新增行后)/i(插入行前)
-c(替换行)
-d(删除行)

-a
nl /usr/local/logs | sed '1,5i====='  (1到5行第行前增加=====行)
-c  行
nl /usr/local/logs | sed '1,5c====='  (1到5行替换成=====)
-d
nl /usr/local/logs | sed '/first/d====='  (first行删除=====)

配置文件增加行
sed '$a \   oneline \n    twoline' /usr/local/logs
        转义空格    换行          重定向

-s   每一行第一个匹配内容替换
nl /usr/local/logs | sed 's/false/true/'  (把内容  false 替换 true)
nl /usr/local/logs | sed 's/false/true/g'
        s/false/falseaa/  等价于  s/false/&aa/
s/false/as/      等价于   s/f\(a\)l\(s\)e/\1\2/   \(\) \1


\u\l\U\L 转换为大/小写   s/false/\ufalseaa/  等价于  s/false/\u&aa/

案例显示网卡ip  
ifconfig eth0 | sed -n '/inet /p' |sed 's/inet.*r://'|sed 's/B.*$//'
网卡信息      |      ip行         |ip 前替换空格     |ip 后替换空格
ifconfig eth0 | sed -n '/inet /p' |sed 's/inet.*r:\([0-9.]\+\).*$/\1/'

sed高级命令
-{}:多个sed命令 用;分开
nl /usr/local/logs | sed '{20,30d;s/false/true/}'
                          先删除  再替换
   
n 读取下一个输入行
nl /usr/local/logs | sed -n '{n,p}' 偶数行
        nl /usr/local/logs | sed -n '{p,n}' 奇数行


数据筛选
passwd 格式  lzm 1000 1000
lzm:x:1000:1000:Centos,,,:/home/lzm:/bin/bash
        sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/USER:\1 UID:\2 GID:\3' passwd

   -r   sed '3r 123.txt' abc.txt  把123.txt整个文件内容写入到匹配到abc.txt 第3行后面  两个文件内容都不变
-w   sed '2w abc.txt' 123.txt   把123.txt第2行 写入到abc.txt内  abc.txt 只有第2行数据  abc.txt文件改变
   

脚本格式
sed -f scriptfile file(s)




awk 文档


awk处理方式
行处理 并切片处理

格式 
命令行格式
awk [options] 'command' file(s)

基本格式 
awk [options] 'command' file(s)
command:pattern(正则;逻辑判断式){awk操作命令}
awk操作命令: 内置函数:print() printf() getline...;
             控制指令:if(){...}else{...}; while(){...};\


awk内置参数应用
awk内置变量1
$0:当前行
$1:每行第一个字段
$2:每行第二个字段  ....

awk内置参数:分割符
options: -F field-separator(默认空格)
   例如: awk -F ':' '{print $1 \t $3}' /etc/passwd

awk内置变量2
     NR: 每行的记录号
     NF: 字段数量变量
FILENAME: 正在处理的文件名

案例  print printf 
awk -F ':' '{print "行号:"NR,"每行总变量数:"NF,"用户名:"$1}' /etc/passwd
awk -F ':' '{print "行号:%3s 每行总变量数:%s 用户名:%s,NR,NF,$1}' /etc/passwd   %3s 点三个位置

数量比较
awk -F ':' '{if($3>100) print "行号:"NR,"每行总变量数:"NF,"用户名:"$1}' /etc/passwd
awk -F ':' '$3>100{print "行号:"NR,"每行总变量数:"NF,"用户名:"$1}' /etc/passwd

sed '/Error/p' error.log | awk '{print $1}'
=  awk '/Error/{print $1}' error.log





awk 逻辑判断式
awk 逻辑
    ~ !~ : 匹配正则表达式
       == != < > : 判断逻辑表达式
   例如  awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd


扩展格式
awk [options] 'command' file(s)
command2扩展
BEGIN{print "start"} pattern{commands}END{print "end"}
   
案例: passwd 制表
awk -F ':' 'BEGIN{print "行号 列变量总数 用户名"}{print NR,NF,$1}END{print"-------"FILENAME"------"}' passwd

案例: 文件夹下文件大小
ls -l | awk -F ':' 'BEGIN{size=0}{size+=$5}END{print" size is" size/1024/1024"M"}'

案例  统计显示/etc/passwd的账户总人数
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print" count = " count}' passwd

案例  统计显示/etc/passwd UID大于100的用户名
awk -F ':' 'BEGIN{count=0}{if($3>100) name[count++]=$1}END{for(i=0;i<count;i++) print i,name[i]}' passwd

案例  统计netstat -anp 状态下为LISTEN和CONNECTED的连接数量
netstat -anp | awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for(i in sum) print i,sum[i]}'

脚本格式
             awk -f awk-script-file file(s)
 
 
 









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值