grep(查询)
grep -E //正则查询
// 实现or查询
grep -E ‘条件1|条件2’
sed (编辑)
sed -i ‘s/pattern/replace/g’ file // 全局替换pattern->replace
sed -e ‘/pattern/w outfile’ file // file里符合pattern的行写入outfile
awk (计算/过滤)
1、awk -F: ‘{print $0}’ file // 打印每一行
2、awk ‘BEGIN{count=0;print “初始化用户数”,count} {count++;print $0} END{print “总用户数”,count}’ file // 初始化变量count=0,每行输出整行,count+1,结束输出count数
3、awk ‘{gsub(/root/,"@@");print $0}’ passwd3 // 替换所有passwd3中root->@@
参考博文
常用NF 字段 NR当前记录行号
条件操作符
<、<=、==、!=、>=、匹配正则表达式、!不匹配正则表达式
匹配:awk ‘{if ($4~/ASIMA/) print $0}’ temp 表示如果第四个域包含 ASIMA,就打印整条
精确匹配:awk ‘$3==“48” {print $0}’ temp 只打印第 3 域等于"48"的记录
不匹配: awk ‘$0 !~ /ASIMA/’ temp 打印整条不包含 ASIMA 的记录
不等于: awk ‘$1 != “asima”’ temp
小于: awk ‘{if ($1<$2) print $1 “is smaller”}’ temp
设置大小写: awk ‘/[Gg]reen/’ temp 打印整条包含 Green,或者 green 的记录
任意字符: awk ‘$1 ~/^…a/’ temp 打印第 1 域中第四个字符是 a 的记录,符号’^’代表行首,符合’.’代表任意字符
或关系匹配: awk ‘$0~/(abc)|(efg)/’ temp 使用|时,语句需要括起来
AND 与关系: awk ‘{if ( $1==“a” && $2==“b” ) print $0}’ temp
OR 或关系: awk ‘{if ($1==“a” || $1==“b”) print $0}’ temp
- 可以起手一个正则进行过滤
- 小括号跟END直接必须以分号":"连接,并且每一行都会被输出
- 可以通过命令行向awk传递变量(类似begin声明变量)
- 可以像go等语言里的hashmap方式声明数据
- awk ‘gsub(/total/,“total2”,$0)’ file 只输出替换成功的行,awk ‘{gsub(/total/,“total2”,$0);print $0}’ file 会输出所有行;
awk ‘gsub(/total/,“total2”,$0)’ file 等同于 awk ‘{if(gsub(/total/,“total2”,$0)) print $0}’
-
gsub 返回1,0
-
match 返回1,0
-
index 返回位置
-
sub 返回1,0
-
substr 截取 开始位置到结束位置的字符串
-
可以使用for while do/while语法
其它查询相关命令
1、cut 按
字符切割
实例 cut -c 9-15