在学习awk和sed首先了解一下linux一些常见命令grep "string" /....
就是在某个文件或者目录下搜索某个字符串关键字
例如要获取/etc/passwd中的有root的一行
1 | grep -n "root" /etc/passwd |
如果我要在某个目录中以及子目录中寻找某个关键字
1 | grep -nR "string" * |
cut命令:
1 | cut -d "分割字符" -f 字段 |
获得root用户在 /etc/passwd中以":"分割的1
grep -n “root” /etc/passwd | cut -d “:” -f 1,3,4
sed:在sed处理数据之前
特点:
每次仅读取一行内容
根据提供的规则命令匹配并修改数据
将执行结果输出
格式
1 | sed [options] '{command}[flags]' [filename] |
options选项:
-e 脚本命令 该选项会将其后面的脚本命令添加到已有的命令中
-f 脚本文件 该选项会将其文件中的脚本命令添加到已有的命令中
-n 只显示匹配的行
-i 直接对原文件进行操作
sed内部常见命令:
i
a
d
p
添加 p 命令
s : 查找并替换
则为全部替换
flags:
n : 1~512之间的数字 表示指定要替换的字符串出现第几次时才进行替换
例如
g : 对数据中所有匹配到的内容进行替换
例如
p : 会打印与替换命令中指定的模式匹配的行
这些内容都不是用来死记硬背的
例
显示 /etc/passwd第三行的信息:
sed -n “3p” /etc/passwd
在/etc/passwd中第一行前添加一行内容为
sed “1iGood good study” /etc/passwd
把/etc/passwd中所有名字为root的字符串改为class
格式
sed “s/root/class/g” /etc/passwd
以上这些对passwd的操作并没有修改源文件内容
awk:awk更倾向于把一行分为多个"字段"然后进行处理
语法格式:
1 | awk [options] 'pattern {action}' filename |