0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统中最重要的三个命令

马哥Linux运维 来源:博客园 2025-03-03 10:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Linux三剑客是Linux系统中最重要的三个命令,它们以其强大的功能和广泛的应用场景而闻名。这三个工具的组合使用几乎可以完美应对Shell中的数据分析场景,因此被统称为Linux三剑客。

1、grep

grep是一个强大的文本搜索工具,用于在文件内容中查找指定的字符串,并将匹配到的行输出到标准输出。grep命令支持多种选项和模式匹配,使得在文件中搜索特定内容变得非常灵活和高效。
文本搜索命令;

命令格式为:

grep "搜索的字符串" 文件名

1)基础

参数:
-c:统计出现的次数
-i:不区分大小写
-n:输出行号

2)实例

统计出现的次数
grep -c "xx" text.log

2、sed

sed是一个流编辑器,主要用于对输入流(或文件)进行基本的文本转换。它可以用来查找、新增、删除和修改替换文本中的数据。sed命令的强大之处在于它可以对文本进行非交互式的编辑,从而提高了处理大量文本的效率。

1)基本概念

sed是一种流编辑器,它是文本处理工具,支持正则表达式,通过一行一行的遍历,执行相应的命令,来处理、编辑文本文件。
(1)语法
sed [选项] ‘command’ 文件名称

选项部分,常见选项包括-n,-e,-i,-f,-r选项。
command部分包括:[地址1,地址2] [函数] [参数(标记)]

(2)命令格式为:

sed [-nefri] '命令' 文本
cat 文本 | sed [-nefr] '命令'
echo '.....' |sed [-nefr] '命令'

2)选项(nefri)

(1)选项-n

sed默认会把模式空间处理完毕后的内容输出到标准输出,也就是输出到屏幕上,加上-n选项后被设定为安静模式,也就是不会输出默认打印信息,除非子命令中特别指定打印选项,则只会把匹配修改的行进行打印。
(2)选项-e

如果需要用sed对文本内容进行多种操作,则需要执行多条子命令来进行操作。

(3)选项-i

sed默认会把输入行读取到模式空间,简单理解就是一个内存缓冲区,sed子命令处理的内容是模式空间中的内容,而非直接处理文件内容。因此在sed修改模式空间内容之后,并非直接写入修改输入文件,而是打印输出到标准输出。如果需要修改输入文件,那么就可以指定-i选项。

(4)选项-f

还记得 -e 选项可以来执行多个子命令操作,用分号分隔多个命令操作也是可以的,如果命令操作比较多的时候就会比较麻烦,这时候把多个子命令操作写入脚本文件,然后使用 -f 选项来指定该脚本。

(5)选项-r
sed命令的匹配模式支持正则表达式的,默认只能支持基本正则表达式,如果需要支持扩展正则表达式,那么需要添加-r选项。

3)命令(acdipynNs)

a新增,c取代,d删除,i插入,p打印,y将字符转成另一个字符等

[root@localhost sed]# cat message
1a
2b
3c
4d
5e
6f
abcdABCD

(1)a

子命令a表示在指定行下边插入指定行的内容。

#将message文件中每一行下边都插入添加一行内容是A
sed 'a A' message
#将message文件中1-2行的下边插入添加一行内容是A
sed '1,2a A' message
#将message文件中1-2行的下边分别添加3行,3行内容分别是A、B、C,这里使用了
,插入多行内容都可以按照这种方式来实现。
sed '1,2a A
B
C' message

(2)i

子命令i和a使用上基本上一样,只不过是在指定行上边插入指定行的内容。

#将message文件中每一行上边都插入添加一行内容是A
sed 'i A' message
#将message文件中1-2行的上边插入添加一行内容是A
sed '1,2i A' message
#将message文件中1-2行的上边分别添加3行,3行内容分别是A、B、C,这里使用了
,插入多行内容都可以按照这种方式来实现
sed '1,2i A
B
C' message

(3)c

子命令c是表示把指定的行内容替换为自己需要的行内容。

#将message文件中所有的行内容都分别替换为A行内容
sed 'c A' message
#将message文件中1-2行的内容替换为A,注意这里说的是将1-2行所有的内容只替换为一个A内容,也就是1-2行内容变成了一行,定址如果连续就是这种情况
sed '1,2c A' message
#将message中1-2行内容分别替换为了A,需要在替换内容上手动加换行
,这样当然也可以将一行内容替换为多行内容
sed '1,2c A
A' message

(4)d

子命令d表示删除指定的行内容,比较简单,更容易理解。

#将message所有行全部删除,因为没有加定址表达式,所以平时如果需要删除指定行内容,需要在子命令前加定址表达式
sed 'd' message
#将message文件中1-3行内容删除
sed '1,2d' message

(5)y

子命令y表示字符替换,可以替换多个字符,只能替换字符不能替换字符串,且不支持正则表达式,

#把message中所有a字符替换为A符号,所有b字符替换为B符号
sed 'y/aB/Ab/' message

(6)=

子命令=,可以将行号打印出来。

#将指定行的上边显示行号
sed '1,2=' message

(7)r

子命令r,类似于a,也是将内容追加到指定行的后边,只不过r是将指定文件内容读取并追加到指定行下边。

#将r.txt文件内容读取并插入到message文件第1行的下边
sed '1r r.txt' message

(8)s

子命令s为替换子命令,是平时sed使用的最多的子命令,没有之一。因为支持正则表达式,功能变得强大无比,下边来详细地说说子命令s的使用方法。
基本语法:
[address]s/pattern/replacement/flags

flags

flags 说明
n 可以是1-512,表示第n次出现的情况进行替换
g 全局更改
p 打印模式空间的内容
w file 写入到一个文件file中

#b全局换成x
sed 's/b/x/g' message

4)实例

(1)test.txt的第一行前插入“a new line”

sed -i '1ia new line' text.txt

(2)在第三行新增一行

sed -i '3a a new line' text

3、awk

awk是一个文本处理工具,用于对文本或数据进行模式扫描和处理。它可以根据定位到的数据行处理其中的分段,并进行数据切片或执行其他操作。awk命令非常适合进行数据提取和报告生成等任务,是Linux系统中进行文本和数据处理的利器。

1)基本概念

awk是结构化数据处理程序;
awk是一门数处理领域的语言;
awk拥有c语言式的语法结构,例如print是语句,但不是函数;
(1)语法
awk [选项] '匹配规则和处理规则 ' [处理文本路径]

匹配规则主要是:正则表达式、字符串

处理规则主要是:设置变量、设置数组、定义函数(用的比较少)、数组循环、加减乘除运算、字符串拼接

(2)命令格式为:

awk [选项] 'BEGIN{定义1;定义2;}/模式/{操作1;操作2}END{操作1;操作2}' file1 file2

选项:如-F:指定分隔符为:
BEGIN{} : BEGIN是在awk处理文本之前运行
/模式/ : 使用的匹配规则,模式为正则或者字符串
{} :循环(每次只处理一行数据),如{print $1}打印第一列
END{} :当所有的处理全部执行完毕之后,执行END中的相关操作

2)操作符:~、==、!=、>等

如:

#当前行匹配以a开头成功时则执行后面的打印 
awk '/^a/ {print $1}'

上面正则匹配的范围是整行的内容,如果只想匹配指定字段的内容,则可以这样使用:

awk '$n~/^1/ {print $1}'

通过~符号规定了正则的匹配操作范围【这里是字段n】,~叫做匹配操作符

3)BEGIN和AND:

BEGIN里面可以打印一些字符串,或者定义变量(变量名="值" ,值不是数字的话,必须要用双引号括起来,引用变量的时候,变量前面是不要加$的)。
END里面可以打印一些字符串,或者进行最终的计算。如果在BEGIN里面没有定义变量的话,最终也可以引用这个变量的,只是变量值为空,在awk里面变量是可以不预先定义;

4)选项

参数 解释
-F 指定分割字段符
-v 定义或修改一个awk内部的变量
-f 从脚本文件中读取awk命令

5)常见变量:

内置变量 解释
FS 默认输入列分隔符(空格和tab)
OFS 默认输出列分隔符(空格)
NF 每行有几段(列)(print $NF代表打印最后一列)
RS 默认输入行分隔符( )
ORS 默认输出行分隔符( )
FILENAME 当前所操作文件名称
NR 读取每行时当前的行号(对于合并文件来说,不同文件行号连续显示)
FNR 读取每行时显示当前的行号(对于合并文件来说,不同文件行号不连续显示)

$0:表示当前整行,$1表示第一个字段,$2表示第二个字段,$n 表示第n个字段;

6)判断:

7)实例

(1)默认分隔符是空格和tab,打印第二列

ps |awk '{print $2}'

(2)分隔符是冒号,打印第一、二列,并用空格分隔

awk -F ":" '{print $1,$2}' /etc/passwd

(3)分隔符是冒号,打印第一、二列,并用指定符号分隔

awk -F ":" '{print $1"--"$2}' /etc/passwd

(4)分隔符是冒号和逗号,打印第一、二列,并用指定符号分隔

awk -F "[:,]" '{print $1"--"$2}' /etc/passwd

(5)默认分隔符,打印以d开头的行的第一列

docker ps |awk '/^d/ {print $1}'

(6)默认分隔符,打印第n列以d开头的行的第一列

docker ps |awk '$n~/^d/ {print $1}'

(7)在打印前指定分隔符变量FS为冒号和逗号

awk 'BEGIN{FS="[:,]"}{print $1}' /etc/passwd

(8)在打印前指定分隔符变量FS为冒号和逗号,定义变量line

awk 'BEGIN{FS="[:,]";line=1}{print $line}' /etc/passwd

(9)定义变量sum计算和,每次输出计算结果,最终输出

awk 'BEGIN{FS="[,:]";sum=0}{sum+=$3;print sum}END{print "sum=",sum}' /etc/passwd

(10)打印当前文件名称

awk '{pring FILENAME}' /etc/passwd

链接:https://www.cnblogs.com/hoaprox/p/18269422

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11631

    浏览量

    218042
  • Linux系统
    +关注

    关注

    4

    文章

    609

    浏览量

    29647
  • 字符串
    +关注

    关注

    1

    文章

    594

    浏览量

    23046
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23451

原文标题:揭秘大厂高效秘籍:掌握Linux三剑客

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    成功电源设计,布局是其中最重要环节

    在成功的电源设计中,电源布局是其中最重要的一环节。但是,在如何做到这一点方面,每个人都有自己的观点和理由。事实是,很多不同的解决方案都是殊途同归;如果设计不是真的一团糟,多数电源都是可以正常工作的
    的头像 发表于 10-26 10:29 4077次阅读

    Linux中如何使用less、more和most命令

    Linux 系统上有许多 GUI 文本编辑器可用于查看和修改文本文件。但如果您只想在终端中读取文本文件。那么 Linux 上有许多可用的命令可以让你做到这一点,其中
    发表于 12-05 09:22 2060次阅读

    示波器最重要三个参数

    示波器的三个重要参数是:带宽、采样率、存储深度。1,带宽示波器带宽的定义没有变,就是输入一正弦波,保持幅度不变,增加信号频率,当示波器上显示的信号是实际信号幅度的70.7%(即3dB衰减)的时候
    的头像 发表于 01-01 08:00 8014次阅读
    示波器<b class='flag-5'>最重要</b>的<b class='flag-5'>三个</b>参数

    非常高效三个linux shell命令分享

    了开发效率。本文浅析三个非常高效的linux shell命令(awk,grep,sed),在开发工程中的实际应用。1,从系统命令的打印中获取
    发表于 12-23 06:38

    Linux系统管理命令

    Linux系统管理命令 Linux系统管理命令  wall
    发表于 01-18 12:47 932次阅读

    Linux系统命令指南

    在“Linux 文件命令精通指南”中,我们讨论了利用最基础和最常用 Linux 文件命令所需的基本信息。在本文中,我将对 Linux
    发表于 05-23 10:23 1124次阅读

    Linux必学的系统安全命令

    新的挑战。本文将重点介绍Linux系统安全的命令。 虽然Linux和Windows NT/2000系统一样是一
    发表于 11-02 15:09 0次下载

    Linux教程之常用Linux命令的详细资料免费下载

    操作。Linux操作系统提供的命令很多,但用户日常使用的命令却很有限。本章将介绍一些在日常工作中最常用的
    发表于 11-16 16:17 14次下载

    Linux中的35find命令用法

    Linux查找命令Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的
    的头像 发表于 02-02 16:53 4273次阅读
    <b class='flag-5'>Linux</b>中的35<b class='flag-5'>个</b>find<b class='flag-5'>命令</b>用法

    电源布局是其中最重要的一环节

    在成功的电源设计中,电源布局是其中最重要的一环节。但是,在如何做到这一点方面,每个人都有自己的观点和理由。事实是,很多不同的解决方案都是殊途同归;如果设计不是真的一团糟,多数电源都是可以正常工作的。
    的头像 发表于 02-12 10:48 989次阅读
    电源布局是其<b class='flag-5'>中最重要</b>的一<b class='flag-5'>个</b>环节

    EMC三个重要规律

    EMC的技术目的在于使电气装置或系统在共同的电磁环境条件下,既不受电磁环境的影响,也不会给环境以干扰。下面我们认识一下EMC领域的三个重要规律和EMC问题三个要素
    的头像 发表于 02-12 10:21 1643次阅读

    嵌入式Linux开发教程:Linux常见命令(上篇)

    。3.2 Linux常见命令本节对进行嵌入式Linux开发经常会用到的一些操作和相关命令,进一步加深对Linux的了解。
    发表于 10-21 13:36 11次下载
    嵌入式<b class='flag-5'>Linux</b>开发教程:<b class='flag-5'>Linux</b>常见<b class='flag-5'>命令</b>(上篇)

    Linux操作必备150命令

    Linux 命令是对 Linux 系统进行管理的命令。对于 Linux
    发表于 11-12 09:19 694次阅读

    分享三个Linux下常用的三个网络测试工具

    Linux系统中,网络命令是管理和监视网络连接的重要工具。其中,ping、traceroute和nslookup是常用的网络命令,可以用来
    的头像 发表于 04-03 14:49 2409次阅读

    linux关机的三个命令

    Linux系统中,常用的关机命令三个:shutdown、poweroff和halt。下面是对这三个
    的头像 发表于 11-26 15:33 5629次阅读