Linux 三剑客grep sed 与 awk
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