三剑客-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. 从日志记一次Spring事务完整流程

    spring事务一次完整流程,创建 >确认获取连接 >完成 >提交>释放链接 DataSourceTransactionManager //Step1. 进入业务方法前,依据事 ...

  2. Go plan9 汇编:手写汇编

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 在 Go plan9 汇编: 打通应用到底层的任督二脉 一文中介绍了从应用程序到汇编指令的转换.本文将结合汇编和 Go 程序实现手写基本的汇编指 ...

  3. 一个Java类在运行时候,变量是怎么在JVM中分布的呢?

    JVM学习第三篇思考:一个Java类在Jvm内存中是怎么存在的 又名:Java虚拟机的内存模型(JMM)是什么样的. 通过前面两篇文章的学习,我们知道了一个Java类的生命周期及类加载器.我们可以得到 ...

  4. 数据库中查询含有某个emoji表情的行数据

    数据库中查询含有某个emoji表情的行数据 MySQL的情况 代码如下 ​ create table tt6(id int, name varchar(800)); insert into tt6 s ...

  5. SQL server temporal table 学习笔记

    refer: https://blog.csdn.net/Hehuyi_In/article/details/89670462 https://docs.microsoft.com/en-us/sql ...

  6. HTTP——简介

    HTTP   

  7. QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?

    简介 QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用. 目录 什么是 ECMAScript ? JavaScri ...

  8. aarch64 和 ARMV8 的区别

    aarch64 和 ARMv8 是紧密相关但涵义不同的术语,在解释他们的区别之前,让我们先简单理解它们各自的含义: ARMv8: ARMv8 是指 ARM 架构的第八个版本,这是由 ARM Holdi ...

  9. 墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

    分享嘉宾:王志斌 瀚高IvorySQL产品经理 整理:墨天轮社区 导读 大家好,我是瀚高IvorySQL产品经理王志斌,IvorySQL是基于PostgreSQL的衍生开源项目. 我今天分享的内容主要 ...

  10. C#的函数使用 和参数修饰符 out ref params

    // 函数和方法 // 函数好比对象的动作行为 在定义函数的时候,职责(作用/功能)越单一越好 满足高内聚 低耦合的开发思路 // 变量的命名规则 小驼峰 // 函数的命名规则 大驼峰 动词开头 // ...