linux 三剑客(awk、sed、grep)

linux 三剑客,处理文本文件三个强大的命令。awk 处理格式文本非常有效率;sed 通过逐行遍历文件,能有效完成文件查找和修改;grep 通过正则表达式匹配,实现文件的模式查找。

awk

https://www.runoob.com/linux/linux-comm-awk.html

可以根据文件指定分隔符,像处理表格一样处理文本或序列。通常来处理字段,并基于字段进行过滤,或进行模式匹配。

语法

awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

常用的内建变量
NF:记录的字段数
NR:记录的行号
OFS:输出字段分隔符,默认值与输入字段分隔符一致。
ORS:输出记录分隔符(默认值是一个换行符)
$n:当前记录的第n个字段,字段间由FS分隔
$0:完整的输入记录
ARGV:包含命令行参数的数组
ARGC:命令行参数的数目

基本用法

  1. 案例一
    输出字段1,4
    awk '{print $1,$4}' log.txt

  2. 案例二
    指定分隔符
    awk -F, '{print $1,$2}' log.txt

  3. 案例三
    设置变量
    awk -va=1 '{print $1,$1+a}' log.txt

  4. 案例四
    执行awk 脚本
    awk -f {awk脚本} {文件名}

  5. 其他案例

awk '$1==2 {print $1,$3}' log.txt    #命令
awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt    #命令
awk '$2 ~ /th/ {print $2,$4}' log.txt # 正则表达式匹配
awk '/re/ ' log.txt
awk '!/th/ {print $2,$4}' log.txt

awk 脚本
关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。

BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句

ls -l *.txt | awk '{sum+=$5} END {print sum}'

以上的应用案例基本包括了常用的awk 的常用用法,更复杂的文本处理则可以通过awk 脚本完成。


sed

https://www.runoob.com/linux/linux-comm-sed.html
与awk 相比,sed在处理文本的行具有更好的效率。

基本语法

sed [-hnV][-e
                    
                    

你可能感兴趣的:(linux 三剑客(awk、sed、grep))