Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux三剑客入门

Linux三剑客入门

作者头像
超蛋lhy
发布于 2019-09-29 09:19:59
发布于 2019-09-29 09:19:59
1.3K00
代码可运行
举报
文章被收录于专栏:PythonistaPythonista
运行总次数:0
代码可运行

grep文本过滤工具

grep命令是Linux系统中最重要的命令之一,功能是从文本文件管道数据流中筛选匹配的数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep [options] [pattern]  [file]

命令  参数   匹配模式   文件数据

grep命令里的匹配模式就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式

参数选项

解释说明

-v

排除匹配结果

-n

显示匹配行与行号

-i

不区分大小写

-c

只统计匹配的行数

-E

使用egrep命令

--color=auto

为grep过滤结果添加颜色

-w

只匹配过滤的单词

-o

只输出匹配的内容

案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /etc/passwd > /tmp/test_grep.txt

grep  "login" /tmp/test_grep.txt  -n                #找出login有关行
grep  "login" /tmp/test_grep.txt  -n -v         #找出没有login的行
grep   "ROOT" /tmp/test_grep.txt  -i            #忽略大小写,找出root有关行
grep -E  "root|sync"  /tmp/test_grep.txt --color=auto       #同时过滤出root和sync有关行
grep "login" /tmp/test_grep.txt  -c                 #统计匹配结果的行数
grep "login" /tmp/test_grep.txt   -n -o       #只输出匹配出的内容
 
grep "oldboy" /tmp/test_grep.txt -w         #完整匹配,字符串精确匹配,整个单词
grep -E "^#|^$"  /tmp/test_grep.txt           #过滤掉空白和注释行 

sed字符流编辑器

注意sed和awk使用单引号,双引号有特殊解释

sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。

sed是操作、过滤和转换文本内容的强大工具。常用功能包括对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定行)。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed [选项] [sed内置命令字符] [输入文件]

选项:

参数选项

解释

-n

取消默认sed的输出,常与sed内置命令p一起用

-i

直接将修改结果写入文件,不用-i,sed修改的是内存数据

sed的内置命令字符用于对文件进行不同的操作功能,如对文件增删改查

sed常用内置命令字符

sed的内置命令字符

解释

a

append,对文本追加,在指定行后面添加一行/多行文本

d

Delete,删除匹配行

i

insert,表示插入文本,在指定行前添加一行/多行文本

p

Print ,打印匹配行的内容,通常p与-n一起用

s/正则/替换内容/g

匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配

案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@pylinux tmp]# cat student.txt
1,oldboy,100
2,alex,99
3,wupeiqi,80
4,yuchao,60

#不加-i参数,以下命令都不会写入如文件,仅修改内存数据
sed 'a heiheihei'   student.txt     #匹配每一行,在下一行添加heiheihei
sed '2a heiheihei'   student.txt    #在第二行下面,添加heiheihei
sed '3d'    student.txt                   #删除第三行
sed '2i haha'    student.txt              #在第二行上面,添加haha
sed '2a heiha\ndadada'  student.txt #在第二行下面,添加多行数据
sed '1,2d'  student.txt               #删除12行
sed 's/wupeiqi/WUPEIQI/g'    student.txt        #吧wupeiqi换成WUPEIQI
sed 's#wupeiqi#WUPEIQI#g'    student.txt        #效果同上
sed '2p'    student.txt -n                  #打印第二行的内容,sed默认显示所有结果,-n不显示默认输出
sed '1,3p'  student.txt -n            #显示13行的内容
sed '11,$d'  student.txt                #删除11行一直到文件结尾

awk基础入门

awk是Linux实际工作中最重要的强大工具.

awk不仅是Linux系统一个命令,也是种编程语言,可以处理数据/文件生成Excel。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk [option] 'pattern{action}' file ..
命令 参数           '条件{动作}'  文件..

参数:

参数

解释

-F

指定字段分割

-v

定义或修改awk内部变量

案例:

  • awk的条件 NR表示行号,NR==5表示第五行
  • awk后面内容请使用单引号,双引号有特殊解析
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk 'NR==2,NR==5' test_grep.txt         #显示第25行之间的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{print NR,$0}' test_grep.txt       #给所有内容加上行号,如同实现cat -n
解释:NR 表示行号,$0表示一整行的内容,print是awk的命令,打印出结果,{print NR,$0}是awk固定语法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk 'NR==2||NR==6 {print NR,$0}' test_grep.txt      #显示文本的第二行和第六行
awk 'NR==2,NR==6 {print NR,$0}' test_grep.txt           #显示文本的第二行到第六行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F ":" '{print NR,$1,$3,$NF}' test_grep.txt     
解释:-F 指定分隔符,以冒号分割
'{print NR,$1,$3,$NF}'  打印出NR行号,$1第一列 $3第三列  $NF最后一列,注意$0表示整行
  • awk的替换查找函数,gsub()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{gsub("bin","BIN",$0);print $0}' test_grep.txt  
解释:gsub("想替换的内容","替换后的内容",在一整行都替换;显示替换后的整行结果)
  • 取出网卡的ip地址,注意每台机器的信息不一样
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
方法一:[root@pylinux tmp]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.141.32.137  netmask 255.255.192.0  broadcast 10.141.63.255
        ether 52:54:00:4f:ab:36  txqueuelen 1000  (Ethernet)
        RX packets 32262057  bytes 4978629753 (4.6 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 38885574  bytes 7916319323 (7.3 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      
ifconfig  eth0| awk -F "inet|netmask"  'NR==2 {print $2}'  
解释:因为这里信息左右两边是inet和netmask,因此以它俩分割
显示第二行的结果,第二列的信息

方法二:
[root@pylinux tmp]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:4f:ab:36 brd ff:ff:ff:ff:ff:ff
    inet 10.141.32.137/18 brd 10.141.63.255 scope global eth0
       valid_lft forever preferred_lft forever
       
       
ip addr show eth0 |awk -F "inet|/18" 'NR==3 {print $2}'   
解释:同理

方法三:用不同的分隔符处理
ifconfig eth0|awk -F " " 'NR==2 {print $2}'
  • 搜狐面试题

处理如下文件内容,将域名取出且根据域名计数排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.baidu.com/index.html
https://sohu.com/index.html
https://sports.sohu.com/index.html
https://sports.sohu.com/index2.html
https://sports.sohu.com/index3.html
http://it.sohu.com/index.html
http://it.sohu.com/index2.html

解法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F "/" '{print $3}' test_html.txt |sort|uniq -c
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
三剑客命令
三剑客的功能非常强大,但我们只需要掌握他们分别擅长的领域即可:grep擅长查找功能,sed擅长取行和替换。awk擅长取列。
云计算小黑
2022/12/28
3.5K0
三剑客命令
Sed三剑客入门与进阶
描述:功能强大的流式文本编辑器(流编辑器-Stream editor)进行文本过滤与格式化替换输出,是在进行文本处理中非常实用的工具,能够完美的配合正则表达式使用;
全栈工程师修炼指南
2022/09/28
3.2K0
Sed三剑客入门与进阶
文本三剑客
通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析 的,比如 find,ls,cp,mv等 shell常见通配符
星陨1357
2023/03/14
2.5K0
文本三剑客
文本处理三剑客命令
贾维斯Echo
2023/10/18
2520
文本处理三剑客命令
【Linux】三剑客 grep、awk、sed 常见用法
grep、awk、sed 都是 Linux 命令行工具,通常用于处理文本数据,俗称“Linux 三剑客“。
行者Sun
2024/09/02
8390
【Linux】三剑客 grep、awk、sed 常见用法
Linux下文本处理“三剑客”
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行,grep和sed的区别在于,grep是以行为单位,进行字符串的对比,sed则可以进行删除、替换等更多的功能
网络安全自修室
2020/09/15
1.1K0
Linux 文本处理三剑客应用
Linux 系统中文本处理有多种不同的方式,系统为我们提供了三个实用命令,来实现对行列的依次处理功能,grep命令文本过滤工具,cut列提取工具,sed文本编辑工具,以及awk文本报告生成工具,利用这三个工具可以灵活的过滤截取任何系统文本内容。
王瑞MVP
2022/12/28
1.3K0
文本处理三剑客之grep
grep:文本过滤,横向截取,(模式:pattern)工具           grep, egrep, fgrep(不支持正则表达式搜索) sed:stream editor,文本编辑工具,文本的替换与编辑,不是进入交互式界面,而是直接在命令行编辑,它是非交互式性的,
用户4877748
2020/07/21
6530
Shell 编程(六):文本三剑客之 Awk
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
陈大剩博客
2023/03/06
1.3K0
Shell 编程(六):文本三剑客之 Awk
每天一个Linux命令--文本处理三剑客之sed
grep、sed、awk被称为文本处理三剑客。对于纯文本来说,没有这三个工具干不了的事情,并且效率也不低。今天给大家介绍一下其中的sed。
DBA札记
2021/07/06
6200
每天一个Linux命令--文本处理三剑客之sed
Shell 编程(六):文本三剑客之 Awk
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
高久峰
2023/09/18
3860
Shell 编程(六):文本三剑客之 Awk
Linux文本处理三剑客
awk、sed、grep是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。
小简
2023/01/04
4.9K0
Linux文本处理三剑客
五分钟入门文本处理三剑客grep awk sed
grep awk sed是Linux下文本处理常用的命令,能完成很多神奇的操作,今天就分享一下这三个命令最常见的用法
Java识堂
2020/05/27
6930
Linux 三剑客 grep、sed、awk
在 Linux 的命令行世界里,有三个强大的文本处理工具:grep、sed 和 awk。它们被统称为 "Linux 三剑客",它们各自拥有独特的功能,可以帮助我们高效地进行各种文本处理任务。让我们一一了解它们。
南山竹
2024/06/25
1790
Linux 三剑客 grep、sed、awk
Linux系统正则表达式
学习Linux系统的朋友们肯定都会接触到正则表达式,或者开发人员也会遇到这个东东,说起正则表达式,使我想起“会者不难,难者不会”这句话,的确如此,相信很多人刚接触正则表达式,肯定一头雾水,觉得很难学会,是的,民工哥也是这么个感觉,但是相信大家都认真去学习、去练习,肯定能学会的。
民工哥
2020/09/16
1.6K0
Linux系统正则表达式
详解Linux三剑客之awk
awk不仅仅是linux系统中的一个命令,而且是一种编程语言;它可以用来处理数据和生成报告(excel);处理的数据可以是一个或多个文件;可以是直接来自标准输入,也可以通过管道获取标准输入;awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。
宜信技术学院
2019/06/19
1.2K0
详解Linux三剑客之awk
【Linux系列】三剑客awk,sed,grep
grep(global regular expression print,全局正则表达式输出)是一个搜索工具。
用户9913368
2022/08/13
1.2K0
Linux三剑客之grep,awk,sed命令必知必会
Grep是用于快速搜索匹配模式的简单工具,但是awk更像是一种编程语言,用于处理文件并根据输入值生成输出。
Vincent-yuan
2021/12/20
9.5K0
Linux三剑客之grep,awk,sed命令必知必会
【Linux运维面试题】三剑客笔试题集合
1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC)
kubernetes中文社区
2020/06/03
2.9K0
Shell四剑客实操案例
在Shell编程工具中,四剑客工具的使用更加的广泛,Shell编程四剑客包括:find、sed、grep、awk,熟练掌握四剑客会对Shell编程能力极大的提升。
胡齐
2019/09/23
2.2K0
相关推荐
三剑客命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验