Linux三剑客
Posted buling_buling_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux三剑客相关的知识,希望对你有一定的参考价值。
Linux三剑客
1、grep
正则表达式
(1)、匹配单个字符
cat <file> | grep “c” 匹配某个字符“c”
cat <file> | grep -i “c” 可以忽略大小写
cat <file> | grep 1.3 "."表示单个字符
(2)、匹配一组字符
匹配多个字符中的某一个:cat <file> | grep "[string]"
grep [0-9a-zA-Z] :满足其中一个就可以
grep “[[:upper:]]” :取大写英文字母
grep [^a-z] :排除
(3)、定位符
行首定位符:^
cat <filer> | grep “^1” :以1开头的
行尾定位符:$
cat <file> | grep “3$” :以3结尾
定位空行: ^$
cat <file> | grep “^$” :找到空行
边界:\\b
cat <file> | grep “he\\b”:找出所有以“he”为边界的单词
非边界:\\B
cat <file> | grep “he\\B”:找出所有“he”在中间的单词
(4)、POSIX字符集(可移植操作系统接口)
类型 | 匹配字符 |
---|---|
[[:alnum:]] | 数字字符 |
[[:alpha:]] | 字母字符 |
[[:upper:]] | 大写字母字符 |
[[:lower:]] | 小写字母字符 |
[[:print:]] | 可显示的字符 |
[[:blank:]] | 空格(space)与定位字符 |
[[:punct:]] | 标点符号字符 |
[[:space:]] | 空白(whitespace)字符 |
[[:digit:]] | 数字字符 |
[[:graph:]] | 非空格(nonspace)字符 |
[[:xdigit:]] | 十六进制数字字符 |
[[:cntrl:]] | 控制字符 |
有的时候,我们使用上面的字符集会很方便!
比如:
要查询文件列表里面含空格键的,可以这样
wudi@aliyun~% ls | grep '[[:blank:]]'
要查询文件列表里面含连续1-6个大写字符的
wudi@aliyun~% ls | grep '[[:upper:]]{1,6}'
2、sed(非交互式的文本编辑器–流编辑器)
(1)、grammar:sed [-nefri] command file
options:
-n:安静模式,只输出处理的
-e:不编辑源文件,默认选项
-f scripfile :执行脚本文件中的命令
-r:支持正则表达式
-i:直接修改文件
(2)、sed命令
a:追加 sed ‘1a hello’
c:替换操作 sed ‘1,3c yes’
d:删除
sed ‘1d’ :删除第一行
sed ‘$d’ :删除最后一行
sed ‘2,$d’:删除第2行到最后一行
p :打印 :sed -n ’ 2,$p’:打印第2到最后一行
~:表示步长
sed -n ‘0~2p’ :表示偶数行
sed -n ‘1~2p’ :表示奇数行
+:表示连续几行
sed -n ‘1,+3p’ :表示从第1行开始。连续打印接下来的3行
s:替换字符
sed ‘s/XXXX/yyyy/g’:表示将xxxx全局替换成yyyy
3、awk(用于处理字符串的语言–文本处理利器)
grammar :awk [-Ffv] ’ BEGIN {commands} pattern {commands} END {commands} ’ file
options:
-F fs:指定分隔符,fs可以是正则表达式,例如“ -F :” 以:为分隔符
-v var=value:赋值一个用户定义的变量
-f scripfile :从脚本文件读取awk命令
4、随堂练习
1、显示root用户的默认shell
2、找出 /etc/passwd中的两位或者三位数
3、计算 /etc/passwd中uid为两位数或者三位数的和,打印具体信息
4、计算3*3数组中 1|2|3 \\n4|5|6\\n7|8|9中间列的和
5、顺序打印 /etc/passwd名字及顺序编号。格式:编号,名字,编号从1开始
方法1:
方法2:
6、从 /etc/passwd中将uid >= 1000 的数加起来,并输出对应的用户名与uid
以上是关于Linux三剑客的主要内容,如果未能解决你的问题,请参考以下文章