三剑客-grep-awk-sed

grep

格式:

grep 参数 过滤文件内容 文件名称

cat file|grep '过滤的内容'

​ 参数: -v 取反

​ -E 支持扩展正则 | 或者 egrep ‘$|#’

​ -n 显示过滤内容的行号

​ -o 查看匹配过滤过程

例:

 [root@oldboyedu ~]# grep root passwd
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# grep root passwd -o
root
root
root

awk

awk 过滤内容和统计数据

格式:

​ awk '/匹配模式/{动作}' file

​ cat file|awk '模式{动作}'

参数:

​ awk中 动作的逗号 表示空格

​ awk 内置变量

​ $1 $2 过滤列

​ NR 过滤行号

​ , 即空格

​ NF 最后一列的列号

​ -F 指定分隔符

例:

只有模式没有动作 默认输出模式匹配到的内容
[root@oldboyedu ~]# awk '/root/' passwd
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# awk '/root/,/adm/' passwd #过滤出从root到adm的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin [root@oldboyedu ~]# awk 'NR==1' passwd #过滤行号等于1的行
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# awk -F: '$3==0' passwd #-F指定分隔符是冒号: $3是第三列 以:为分隔符过滤出第三列等于0的行
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# awk -F: '$3>0' passwd # 以:为分隔符过滤出第三列等于0的行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin #第三列数值为用户的uid号
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 模式+动作 #过滤出root到adm的行中的第一列信息
[root@oldboyedu ~]# awk -F: '/root/,/adm/{print $1}' passwd
root
bin
daemon
adm 输出行号 #过滤行号,输出第一列信息--→行号
[root@oldboyedu ~]# awk -F: '{print NR,$0}' passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin wc 统计数量
-l 统计行号
-L 统计文件中最长的行的长度 [root@oldboyedu ~]# awk -F: ' $3>0 && $3<1000' /etc/passwd|wc -l
22 #过滤uid大于3和小于1000的行,wc -l 进行统计,由此可过滤出系统中的虚拟用户
[root@oldboyedu ~]# awk -F: '$3==0' /etc/passwd
root:x:0:0:root:/root:/bin/bash #过滤uid等于0的行
[root@oldboyedu ~]# awk -F: '$3==0' /etc/passwd|wc -l
1 #过滤uid等于0的行 wc -l 进行统计
[root@oldboyedu ~]# awk -F: '$3>=1000' /etc/passwd|wc -l
3

sed

sed 取行 过滤字符串 替换

格式:

sed '/过滤字符串/' file

cat file|sed '/过滤字符串/'

参数:

​ -n 取消默认输出

​ -i 修改源文件

​ sed执行过程:

​ 一行一行的处理

​ 如果对当前的行 没有动作 默认输出到屏幕

​ sed 增 删 改 查

例:

sed 之 查内容
按照字符串匹配
[root@oldboyedu ~]# sed -n '/root/p' passwd
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# sed -n '/^root/p' passwd
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# sed -n '/^ro/p' passwd
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# sed -n '/sh$/p' passwd
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# sed -n '/root/,/adm/p' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin [root@oldboyedu ~]# sed -n '3p' passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@oldboyedu ~]# sed -n '2p' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
[root@oldboyedu ~]# sed -n '1p' passwd
root:x:0:0:root:/root:/bin/bash [root@oldboyedu ~]# sed -n '1,3p' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@oldboyedu ~]# sed -n '$p' passwd # 最后一列
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sed之增加内容
a 在n行后面追加新的内容
[root@oldboyedu ~]# cat test.txt
lidao 2
alex 2
oldboy 3
test 1
[root@oldboyedu ~]# sed '2a oldboy111' test.txt
lidao 2
alex 2
oldboy111
oldboy 3
test 1 i 在当前行插入新的内容
[root@oldboyedu ~]# sed '2i oldboy111' test.txt
lidao 2
oldboy111
alex 2
oldboy 3
test 1 c 替换当前整行的内容
[root@oldboyedu ~]# sed '2c oldboy111' test.txt
lidao 2
oldboy111
oldboy 3
test 1 [root@oldboyedu ~]# sed -i '7c SELINUX=disabled' /etc/selinux/config w 保存当前的内容至文件 没啥用 [root@oldboyedu ~]# sed '1,3w newfile.txt' test.txt
lidao 2
alex 2
oldboy 3
test 1 sed之删除
格式:
sed '3d' file [root@oldboyedu ~]# sed '3d' test.txt
lidao 2
alex 2
test 1
[root@oldboyedu ~]# sed '1,3d' test.txt
test 1 [root@oldboyedu ~]# sed '/root/d' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sed替换
sed 's#替换谁#替换成什么#g'
sed 's///g'
sed 's@@@g'
s 替换标志
g 全局替换
[root@oldboyedu ~]# sed 's#root#oldboy#g' passwd
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
oldboy:x:oldboy:var/var:sbin/login [root@oldboyedu ~]# sed 's#200#201#g' /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.201
PREFIX=24
GATEWAY=10.0.0.254 [root@oldboyedu ~]# sed 's#[:/0-9x]# #g' /etc/passwd|xargs -n1|sort |uniq -c|sort -rn|head
25 sbin
19 nologin
8 bin
7 var
4 root
4 oldboy
4 bash
3 sync
3 spool
3 shutdown [root@oldboyedu ~]# sed 's#[:/0-9]# #g' /etc/passwd|xargs -n1|awk '{count[$1]++}END{for(i in count) print i,count[i]}'|awk '{print $2,$1}'|sort -rn|head|grep -v x
25 sbin
19 nologin
8 bin
7 var
4 root
4 oldboy
4 bash
3 sync
3 spool

三剑客-grep-awk-sed的更多相关文章

  1. Linux三剑客-grep || awk || sed

    grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a  将二进制文档以文本方式处理 -c  计算找到的符合行的次数 -i  忽略大小写 -n  顺便 ...

  2. 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed

    grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...

  3. linux三剑客grep,sed,awk

    grep 官方帮助文档 Usage: grep [OPTION]... PATTERN [FILE]... Search for PATTERN in each FILE or standard in ...

  4. Linux三剑客grep、sed、awk

    grep grep file grep -i file grep -v file

  5. 正则表达式(grep,awk,sed)和通配符

    1. 正则表达式 1. 什么是正则表达式? 正则表达式就是为了处理大量的字符串而定义的一套规则和方法. 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串. Linux正则 ...

  6. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  7. grep/awk/sed 或者 并且 否定

    Grep 'OR' Operator Find all the lines in a file, that match any of the following patterns. Using GRE ...

  8. 【Linux】linux中文本操作利器grep,awk,sed

    grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...

  9. Linux四剑客find/grep/awk/sed

    find ./ -name "*txt" -maxdepth 1 -type f -mtime -2 -exec mv {} ./bbb.txt \; 这条命令表示找当前目录(-m ...

  10. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

随机推荐

  1. docker高级篇2-分布式存储之三种算法

    面试题: 1~2亿条数据需要缓存,请问如何设计这个缓存案例? 答:单机单台100%是不可能的.肯定是分布式缓存的.那么用Redis如何落地? 一般有三种方案: 哈希取余分区:一致性哈希算法分区:哈希槽 ...

  2. 【经验】通过JVM调优,让凯哥个人博客响应速度提升了不少

    为什么你的个人博客访问慢? 不知道大家有没有注意到,在22.10.31 21点之后,凯哥的个人博客站点(凯哥Java:www.kaigejava.com)访问速度提升了不少.那是因为凯哥对站点做了优化 ...

  3. vue 中 elementUI el-table 实现滚动加载

    vue 中 elementUI el-table 实现滚动加载 一.需求 vue 中 elementUI el-table 实现滚动加载,场景:当表格需要显示大量数据时,又想通过一页来进行展示数据. ...

  4. Google Maps Embed API & JavaScript API

    前言 很多年前写过一篇 Google Map 谷歌地图, 这篇算是翻新版本. Google Map Registration Google Maps Platform 是整个 Google Map 的 ...

  5. C# 基础 – 装箱 / 拆箱, 堆 / 栈

    前言 有些概念可能你用不到, 但是懂也无妨. 装箱 / 拆箱 参考: C#装箱和拆箱(Boxing 和 UnBoxing) 通常讲到这些都跟性能有关. 把值类型变成引用类型就叫装箱. int numb ...

  6. Windows远程设置''不可复制''的权限

    起因: 有一个技术部门的同事需要远程其他同学的电脑进行操作,但是不允许他复制目标电脑上的文件,避免造成资料外泄 解决办法: 组策略编辑器中,设置 计算机配置 -> 管理模板 -> wind ...

  7. Android Qcom USB Driver学习(四)

    VID/PID识别USB设备 CDC-ACM驱动介绍 CDC-ACM(Communication Device Class--Abstract Control Model)驱动实现以USB设备驱动和t ...

  8. Oracle ADG 自动切换脚本分享

    为大家分享一个[Oracle ADG自动切换]的脚本,由云和恩墨工程师HongyeDBA编写,支持Switchover.Failover. 下载链接:https://www.modb.pro/down ...

  9. 实例:([Flappy Bird Q-learning]

    目录 实例:(Flappy Bird Q-learning) 问题分析 关于Q 训练 成果 实例:(Flappy Bird Q-learning) 问题分析 让小鸟学习怎么飞是一个强化学习(reinf ...

  10. Linux环境下的mysql安装

    MySQL8.0.26-Linux版安装 1.准备一台Linux服务器 云服务器或者虚拟机都可以; Linux的版本为 Centos7; 2.下载Linux版MySQL安装包 https://down ...