linux下的三剑客(grep、sed、awk)命令参数记录笔记

132 阅读1分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路

linux下的三剑客(grep、sed、awk)命令参数记录笔记

linux下的三剑客
grep
-i 忽略大小写
-w 精确匹配,必须是完全匹配的单词
-v 取反,既不包含
-E 扩展模式
-C 显示匹配到字符的前后行数(grep -C 3 root /etc/passwd)
-n 显示被匹配到的行编号
-c 显示被匹配到的有多少行
[0-9]   [a-Z]  正则表达式
^ 锚钉行首
& 锚钉行尾

特例  ^$  取空白行
grep -Ev "^#|^$" sshd_config
egrep -v "^#|^$" sshd_config


sed
sed ‘s/old/new/g’ 文件名称 说明:数据搜索并修改,在缓存区域编辑文档,原文件内容不改变
sed -i ‘s/old/new/g’ 文件名称 直接修改原文件
实例
sed 's/SELINUX=disabled/SELINUX=enforcing/g' selinux

sed '2d' selinux 删除文件中第二行
sed '2,5d' selinux 删除文件中第二行至第五行
sed '2i haha' selinux 在第二行上方增加一行
sed '2a haha' selinux 在第二行下方增加一行
sed '2c tihuan' selinux 将第二行替换为tihuan
sed -n '2,5p' selinux 显示2~5行内容
nl /aaa/selinux | sed -n '/disabled/p' 显示匹配的内容以及所在行号


?
awk
$0 表示整个当前行
$1 表示每行第一个字段
$2 表示每行第二个字段   以此类推
awk '{print $2}' passwd 显示文本中第二列内容(不指定分隔符时默认空格为分隔符)
awk -F: '{print $2}' passwd    # F可指定分隔符

awk -F: '{print $1,$7}' OFS='\t' passwd 打印17列,并以制表符分割,便于复制到表格。
[root@test aaa]# awk -F: '{print $1,$7}' OFS='\t' passwd
root	/bin/bash
bin	/sbin/nologin

awk -F: '{print $1;print $2}' passwd 将一行的12列字段分行输出
[root@test aaa]# awk -F: '{print $1;print $2}' passwd 
root
x
bin
x

awk -F: '{print $1$7}' passwd 将两列字段合并输出
[root@test aaa]# awk -F: '{print $1$7}' OFS='\t' passwd
root/bin/bash
bin/sbin/nologin
 
awk '/root/' passwd 显示匹配到root的行
[root@test aaa]# awk '/root/' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

awk -F: '$3 > 10''{print $1,$3}' passwd 打印出第三列大于10的列中的第13字段
[root@test aaa]# awk -F: '$3 > 10''{print $1,$3}' passwd 
operator 11
games 12