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三剑客的主要内容,如果未能解决你的问题,请参考以下文章

linux三剑客awksedgrep

linux三剑客awksedgrep

linux三剑客awksedgrep

01-09 Linux三剑客-awk

linux三剑客命令基本用法汇总

Linux的三剑客