Linux(grep、sed、awk三剑客)

文章介绍了Linux系统中用于数据处理的三个重要命令行工具——grep、awk和sed。grep用于搜索特定字符模式,awk用于数据分段和分类,sed则用于文本内容的修改。通过正则表达式,这三个工具能高效地处理和筛选大量数据。文章还详细解释了各命令的选项、格式和常见应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 三剑客:grep,awk 和 sed 。可以用这三件法宝很方便的处理数据 : 查找,分段,修改 ,而这三个功能对应着:grep,awk,sed。
如果把数据比作人群,那么 grep 就是照妖镜 ,用来找出妖精; awk 就是尺子 给人群分门别类;而 sed 就是宝剑 ,用来除掉妖精。当你明白为什么要用三剑客时,就更容易拿这三把剑去斩妖除魔。

grep命令

grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子。

 正则表达式的通配符
通配符功能
c*将匹配 0 个(即空白)或多个字符 c(c 为任一字符)。
.将匹配任何一个字符,且只能是一个字符。
[xyz]匹配方括号中的任意一个字符。
[^xyz]匹配除方括号中字符外的所有字符。
^锁定行的开头。
$锁定行的结尾。

需要注意的是,在基本正则表达式中,如通配符 *、+、{、|、( 和 )等,已经失去了它们原本的含义,而若要恢复它们原本的含义,则要在之前添加反斜杠 \,如 \*、\+、\{、\|、\( 和 \)。

 grep 命令的基本格式如下:

[root@localhost ~]# grep [选项] 模式 文件名

这里的模式,要么是字符(串),要么是正则表达式。而此命令常用的选项以及各自的含义如表 2 所示。

表 2 grep 命令常用选项及含义
选项含义
-c仅列出文件中包含模式的行数。
-i忽略模式中的字母大小写。
-l列出带有匹配行的文件名。
-n在每一行的最前面列出行号。
-v列出没有匹配模式的行。
-w把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行。
  • 测试工作常用的grep命令和意义:
grep pattern file
grep -i pattern file 忽略大小写
grep -v pattern file  不显示匹配行
grep -o pattern file 只把每个匹配的内容独立的行显示
grep -E pattern file 使用拓展正则表达式
#注意:grep 'a[0-9]\{10\}' 等同于 grep -E 'a[0-9]{10}' 
grep -A -B -C pattern file 打印命中数据的上下文
grep pattern -r dir/ 递归搜索
grep -m1 匹配匹配中的第一个
grep -n 顺便输出行号

 sed命令

 sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

  1. 每次仅读取一行内容;
  2. 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
  3. 将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed 命令的基本格式如下: 

 [root@localhost ~]# sed [选项] [脚本命令] 文件名

sed 命令常用选项及含义
选项含义
-e 脚本命令该选项会将其后跟的脚本命令添加到已有的命令中。
-f 脚本命令文件该选项会将其后文件中的脚本命令添加到已有的命令中。
-n默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
-i此选项会直接修改源文件,要慎用。

sed脚本命令

sed s 替换脚本命令

此命令的基本格式为:

[address]s/pattern/replacement/flags

其中,address 表示指定要操作的具体行,pattern 指的是需要替换的内容,replacement 指的是要替换的新内容。

此命令中常用的 flags 标记如下所示。

sed s命令flags标记及功能
flags 标记功能
n1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;
g对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;
p会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。
w file将缓冲区中的内容写到指定的 file 文件中;
&用正则表达式匹配的内容进行替换;
\n匹配第 n 个子串,该子串之前在 pattern 中用 \(\) 指定。
\转义(转义替换部分包含:&、\ 等)。

 awk命令

 awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。

awk 命令的基本格式为:

[root@localhost ~]# awk [选项] '脚本命令' 文件名 

awk 命令选项以及含义
选项含义
-F fs指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。
-f file从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。
-v var=val在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值