likes
comments
collection
share

Linux 三剑客grep sed 与 awk

作者站长头像
站长
· 阅读数 52

grep sed 与 awk 是 Linux 中处理文本最常用的三组指令。grep适合单纯的查找或匹配文本,sed适合编辑匹配到的文本,awk适合格式化文本,对文本进行较复杂格式处理。

1. grep

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。

grep [option] pattern file
  •  -v:显示不被pattern 匹配到的行,相当于[^] 反向匹配
  •  -e :实现多个选项间的逻辑or 关系
  •  -E:扩展的正则表达式

2. sed

sed主要用来自动编辑一个或多个文件, 简化对文件的反复操作.

sed [options] '[地址定界] command' file(s)

options

  •  -n:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行
  •  -e: 多点编辑,对每行处理时,可以有多个Script
  •  -f:把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
  •  -r:支持扩展的正则表达式
  •  -i:直接将处理的结果写入文件
  •  -i.bak:在将处理的结果写入文件之前备份一份

地址界定

  • 不给地址:对全文进行处理

  •  单地址:

    •  #: 指定的行
    •  /pattern/:被此处模式所能够匹配到的每一行
  •  地址范围:

    •  #,#
    •  #,+#
    •  /pat1/,/pat2/
    •  #,/pat1/
  •  ~:步进

    •   sed -n '1~2p' 只打印奇数行 (1~2 从第1行,一次加2行)
    •   sed -n  '2~2p'  只打印偶数行

3. awk

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。

awk [options] 'program' var=value file…
  •  -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

  •  -v var=value:赋值一个用户定义变量,将外部变量传递给awk

  •  -f scripfile:从脚本文件中读取awk命令

  • FS ****:输入字段分隔符默认为空白字符

  •  OFS ****:输出字段分隔符,默认为空白字符

  •  RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效

  •  ORS :输出记录分隔符,输出时用指定符号代替换行符

  •  NF :字段数量,共有多少字段, NF引用最后一列,NF引用最后一列,NF引用最后一列,(NF-1)引用倒数第2列

  •  NR :行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始

  •  FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始

  •  FILENAME :当前文件名

  •  ARGC :命令行参数的个数

  •  ARGV :数组,保存的是命令行所给定的各参数,查看参数

转载自:https://juejin.cn/post/7130607614085300261
评论
请登录