IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Linux文本三剑客——awk、sed、grep -> 正文阅读

[开发工具]Linux文本三剑客——awk、sed、grep

一、grep——文本过滤工具

文本过滤器(模式:pattern)工具,grep,egrep(不支持正则表达式搜索)

grep [选项] 条件 目标文件
选项作用
–color=auto对匹配到的文本着色显示
-v显示不被pattern匹配到的行
-n显示行数
-c统计匹配到的行数
-o仅显示匹配到的字符串

二、sed——编辑器

sed [选项] ‘操作’  参数

sed [选项] -f scripfile 参数
选项作用
-e script :指定sed编辑命令
-f scriptfile :指定的文件中是sed编辑命令
-h :显示帮助
-n :表示仅显示处理后的结果
-i :直接编辑文本文件
-r, -E使用扩展正则表达式
-s将多个文件视为独立文件,而不是单个连续的长文件流

操作作用
a :增加,在当前行下面增加一行指定内容
c :替换,将选定行替换为指定内容
d :删除,删除选定的行
i :插入,在选定行上面插入一行指定内容
p :打印
s :替换,替换指定字符
y :字符转换

输出符合条件的文本

输出第三行

sed -n ‘3p’ test.txt

输出第3-5行

sed -n ‘3,5p’ test.txt 

输出所有奇数行

sed -n ‘p;n’ test.txt

输出所有偶数行

sed -n ‘n;p’ test.txt

输出第1-5行之间的奇数行

sed -n ‘1,5{p;n}’ test.txt

输出第10行之后的偶数行

sed -n ’10,${n;p}’ test.txt

输出包含the的行

sed -n ‘/the/p’ test.txt

输出从第4行的第一个包含the的行

sed -n ‘4,/the/p’ test.txt

输出以PI开头的行

sed -n ‘/^PI/p’ test.txt

输出以数字结尾的行

sed -n ‘/[0-9]$/p’ test.txt

输出包含wood的行

sed -n '/\<wood\>/p' test.sh

删除符合条件的文本

删除第3行

sed ‘3d’ test.txt

删除第3-5行

sed ‘3,5d’ test.txt

删除以小写字母开头的行

sed ‘/^[a-z]/d’ test.txt

替换符合条件的文本

将每行中的第一个the替换为THE

sed ‘s/the/THE/’ test.txt

将每行中的第2个l替换为L

sed ‘s/l/L/2’ test.txt

在包含the的每行行首插入#号

sed 's/^/#/' test.txt 

在每行行尾插入字符串EOF

sed ‘s/$/EOF/’ test.txt

将第3-5行中的所有the替换为THE

sed ‘3,5s/the/THE/g’ test.txt

将包含the的所有行中的o替换为O

sed ‘/the/s/o/O/g’ test.txt

将文件中所有的o删除

sed ‘s/o//g’ test.txt

迁移符合条件的文本

选项作用
H :复制到剪切板
g、G :将剪贴板中的数据覆盖/追加到指定行
w :保存为文件
r :读取指定文件
a :追加指定内容

将包含the的行迁移至文件末尾

sed ‘/the/{H;d};$G’ test.txt

将第1-5行内容转移至第17行后

sed ‘1,5{H’d};17G’ test.txt

将包含the的行号另存为文件out.file

sed ‘/the/w out.file’ test.txt

将文件/etc/hostname的内容添加到包含the的每行以后

sed ‘/the/r /etc/hostname’ test.txt

在第3行后插入一个新行,内容为NEW

sed ‘/the/3aNEW’ test.txt

在包含the的每行后插入一个新行,内容为NEW

sed ‘/the/aNEW’ test.txt

在第3行后插入多行内容,中间的\n表示换行

sed ‘3aNEW1\nNEW3’ test.txt

三、awk——报告生成器

awk 选项  ‘模式或条件{编辑命令}’ 文件1 文件2…. //过滤并输出文件中符合条件的内容

awk -f 脚本文件  文件1 文件2… //从脚本中调用的编辑指令,过滤并输出内容 
  • awk包含几个特殊的内建变量(可直接用)如下所示:
变量意义
FS:指定每行文本的字段分隔符,默认为空格或制表位;
NF:当前处理的行的字段个数;
NR:当前处理的行的行号(序数);
$0:当前处理的行的整行内容;
$n:当前处理的行的第n个字段(第n列);
FILENAME:被处理的文件名;
RS:数据记录分隔,默认为\n,即每行为一条记录。

按行输出文本

输出所有内容,等同于cat test.txt

awk  ‘{print}’ test.txt
awk  ‘{print $0}’  test.txt

输出第1~3行内容

awk  ‘NR==1,NR==3{print}’  test.txt

输出第1~3行内容

awk  ‘(NR>=1)&&(NR<=3){print}’   test.txt

输出第1行,第3行的内容

awk  ‘NR==1||NR==3{print}’  test.txt

输出所有奇数行的内容

awk  ‘(NR%2)==1{print}’  test.txt

输出所有偶数行的内容

awk  ‘(NR%2)==0{print}’  test.txt

输出以root开头的行

awk  ‘/^root/{print}’  /etc/passwd

输出以nologin结尾的行

awk  ‘/nologin$/{print}’  /etc/passwd

统计以/bin/bash结尾的行数,等同于grep –c “/bin/bash$” /etc/passwd

awk  ‘BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}’  /etc/passwd

统计以空行分隔的文本段落数

awk  ‘BEGIN {RS=””} ;END{print NR}’  test.txt

按字段输出文本

输出每行中(以空格或制表符分隔)的第三个字段

awk  ‘{print $3}’  test.txt

输出每行中第1,3个字段

awk  ‘{print $1,$3}’  test.txt

输出密码为空的用户的shadow记录

awk -F ”:” ‘$2==””{print}’  /etc/shadow

输出密码为空的用户的shadow记录

awk  ‘BEGIN {FS=”:”} ; $2==””{print}’  /etc/shadow

输出以冒号分隔且第7个字段中包含/bash的行的第一个字段

awk -F ”:” ‘$7~”/bash”{print $1}’  /etc/shadow

输出包含8个字段且第一个字段中包含nfs的行的第1,2个字段

awk  ‘($1~”nfs”)&&(NF==8){print $1,$2}’  /etc/services

输出第七个字段既不为/bin/bash也不为/sbin/nologin的所有行

awk -F “:” ‘($7 != “/bin/bash”)&&($7 != “/sbin/nologin”){print}’  /etc/passwd

打印文本文件的总行数

awk 'END{print NR}' filename

打印文本第二行第一列

sed -n "2, 1p" filename | awk 'print $1'

输出文件最后一行

 awk -F: '{print $NF}' zz

输出文件的倒数第二列以","隔开

awk -F ',' 'END {print $2}' BIRoomTime20160229.txt 

shell里面的赋值方法有两种,格式为

  1. arg=(命令)
  2. arg=$(命令)

因此,如果想要把某一文件的总行数赋值给变量nlines,可以表达为:

  1. nlines=(awk 'END{print NR}' filename)
    或者
  2. nlines=$(awk ‘END{print NR}’ filename)

通过管道、双引号调用Shell命令

调用wc –l命令统计使用bash的用户的个数,等同于grep –c “bash$” /etc/passwd

awk  -F: ‘/bash$/{print | “wc -l”}’  /etc/passwd

调用w命令,并用来统计在线用户数

awk ‘BEGIN {while (“w” | getline) n++ ; {print n-2}}’

调用hostname,并输出当前主机名

awk ‘BEGIN {“hostname” | getline ; print $0}’

查看网卡流量
ifconfig ens33 |awk '/RX p/{print $5 "字节"}'

扩充

 echo -e "\033[31m 哈哈 \033[0m"

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:19:34  更:2022-05-08 08:20:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:01:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码