Linux常用命令awk和sed
一、awk几个常见内置变量 FS 表示字段分隔符 OFS 表示输出数据的字段分隔符 RS 表示记录分隔符 ORS 表示输出字段的行分隔符 NF 表示字段数 NR 表示记录数
---
1.1、区间选择,比如我们在 1、2、3 之间,使用 awk "$0>2" 指令打印大于2的数据3
echo "
1
2
3
" | awk "$0>2"
1.2、记录数:NR,输入指令去掉打印第一行的数据
awk "NR>1" /tmp/first.txt
1.3、输出显示的from hello mryt_qa被空格分隔成三个字段且first.txt文件中的三条数据字段数都是3
awk "{print NR,NF}" /tmp/first.txt
1.4、 awk "BEGIN{FS="h"}{print NR,NF,$1,$2}" /tmp/first.txt
1.5、 awk "OFS=""-""{print $1,$2,$3}" /tmp/first.txt
1.6、 awk "BEGIN{print 100/3}"
---
二、sed[addr]X[opptions],其中 [] 定义了一个范围,x位是具体操作,options表示进行数据修改的选项,常用的几个: -e 表示可以指定表达式 sed -n "2p" 2 表示打印第二行的数据 s 表示查找并替换 -i 表示直接修改源文件 -E 支持扩展表达式
2.1、sed指令将qa123替换成mryt_qa
sed "s#qa123#mryt_qa#" /tmp/first.txt
2.2、把以q开头的三个字符都替换成xx,后面的23 没有改变,是因为需要添加一个额外的标记符 /g
sed "s/q../xx/g" /tmp/first.txt
三、 问awk和sed最大的区别是什么?
awk用于数据的提取,sed更专注用于数据的修改,sed 的重要作用是完成对数据的增删改查工作: d 是删除 p 是打印 s 是查找并进行替换 1 2 可以根据匹配的数据进行分组处理