grep、sed 和 awk 文本三剑客

2021/11/3 23:11:05

本文主要是介绍grep、sed 和 awk 文本三剑客,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

grep、sed 和 awk 简介

awk、grep、sed 是 Linux 操作文本的三大利器,合称文本三剑客,也是必须掌握的 Linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。

  • grep 更适合单纯的查找或匹配文本

  • sed 更适合编辑匹配到的文本

  • awk 更适合格式化文本(对文本进行较复杂格式处理)

grep

Linux系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

grep 可用于 shell 脚本,因为 grep 通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回 0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。

  egrep = grep -E:扩展的正则表达式 (除了< , > , \b 使用其他正则都可以去掉\)

命令格式
grep [option] pattern file
命令功能

用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

常用参数
  • -A<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。

  • -B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。

  • -C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。

  • -c:统计匹配的行数

  • -e :实现多个选项间的逻辑or 关系

  • -E:扩展的正则表达式

  • -f FILE:从FILE获取PATTERN匹配

  • -F :相当于fgrep

  • -i --ignore-case #忽略字符大小写的差别。

  • -n:显示匹配的行号

  • -o:仅显示匹配到的字符串

  • -q: 静默模式,不输出任何信息

  • -s:不显示错误信息。

  • -v:显示不被pattern 匹配到的行,相当于[^] 反向匹配

  • -w :匹配整个单词

  • -r 或 --recursive : 以递归的方式查找符合条件的文件

cut

cut [选项] 文件名 默认分割符是制表符

选项:

-f 列号: 提取第几列

-d 分隔符: 按照指定分隔符分割列

cut 的局限性:不能分割空格

awk

一个强大的文本分析工具

把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

语法:awk ‘条件1{动作1}条件2{动作2}...’文件名

条件(Pattern):

  • 一般使用关系表达式作为条件: > >= <=等

动作(Action):

  • 格式化输出:print 和 printf

  • 流程控制语句

指定分割符:-F分隔符

sed

sed 是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝(复制然后再修改)。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。

注意: sed 并不与初始化文件打交道, 它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕。

语法:sed [选项]’[动作]’ 文件名

常用选项:

  • -n  使用安静(silent)模式。显示经过 sed 特殊处理的数据

  • -e  允许多点编辑

  • -i  直接修改读取的档案内容,而不是由屏幕输出。

命令功能描述
a\ 新增, a 的后面可以接字串,在下一行出现
c\ 替换
d 删除
i\ 插入, i 的后面可以接字串
p 打印
s 查找并替换,例如 1,20s/old/new/g


这篇关于grep、sed 和 awk 文本三剑客的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程