# linux命令三剑客之 grep,awk,sed 到底有多骚

可以说,这三个命令是linux文本处理中最重要的命令了,在shell中用的也非常的多。

其中awk复杂到可以把它当做一门语言来学,功能十分之强大。

# 初探 grep

我们需要查找关于系统下 root 用户相关的信息

可以在 /etc/passwd 文件下查看,但是我不想用 vim 打开文件,可以直接用 grep 进行查看

将会打印包含root的所有行

2021-03-17_21-55-01

当然grep同样支持正则表达式

2021-03-17_22-02-46

# 初探 sed

sed可以在不打开文件的情况下编辑文件

将hello替换成world

可以使用 sed -i 's/hello/world/g' hello.txt 完成

2021-03-17_22-07-37

# 初探 awk

可以提取我们需要的特定列的内容

2021-03-17_22-12-37

当然以上都是最最简单的用法

还有很多高级的功能,我们一般写在脚本里面

我曾写过的最复杂的一个脚本,就需要依赖于sed和awk提取需要的信息

month1=$(date -d"yesterday" | awk '{print $2}' | awk 'gsub(/[^[:digit:]]/," ",$0)')
month2=$(date -d"yesterday" | awk '{print $2}')
day=$(date -d"yesterday" | awk '{print $3}' | awk 'gsub(/[^[:digit:]]/," ",$0)')
date="$month1.$day.md"
dateFin=$(echo $date | sed 's/ //g')