Linux的三大高级指令

文本文件student

姓名    学号    语文成绩        数学成绩        英语成绩        总成绩

张三    001     80      90      95      265

李四    002     1       85      90      245

赵五    003     65      90      70      225

王六    004     60      40      80      180

周七    005     90      55      85      230

齐八    006     85      90      70      245

平均成绩、最高分

一、grep--按行筛选(仅查找)

1.grep通常用来用来在文件或者上一个命令的输出结果中,筛选出我们所需要的内容

2.cat integer | grep 2 --------目的是在integer这个文件中,筛选出带有2的行。

3.cat integer | grep +正则表达式(vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大)

4.cat 2 grep integer  同样是在文件中找到带2的行

5.ls  -l  /etc/  |  grep  -v  init 的目的是在管道左侧命令的输出结果中筛选出不包含 init这个字符串的内容。(相当于 grep  init 的取反)

二、sed 按行修改(增删改查)

1.命令sed通常会按行处理文本,它可以在原来不改动原来文件/结果的输出结果的基础上,按我们要求删除、插入、修改指定的行。

2.cat -n student | sed '1d'    ---输出student的内容,(-n代表前面有行号),并将第一行删除

3.cat -n student | sed '3,5d'  --输出student的内容,并将3到5行删除

4.cat -n student | sed '1a abcdfe' --输出student的内容,并在第一行后面,第二行前,插入abcdfe.

5. cat -n student | sed '1c abcd' --输出student的内容,并将第一行修改为abcd 

6.cat -n student | sed '3,5p'  ---输出student的内容,只显示3到5行

7.命令sed当使用在查找的这个场景中时,要加-n 选项参数,不加n数据会重复,显示原文本和处理后的数据。

8.cat -n student | sed -n '/张三/p'  ---输出student的内容,只显示含有张三的行。

三、AWK按行处理(对每行文本做更复杂的处理 )

1.命令AWK通常会按照行去处理文本,它要做的第一个事就是按照行进行切割,如果指定切割符就按照指定的走,没有就按照默认的空字符。

2.cat student | awk '{print $2}' (awk相当于split) ----这条命令的作用就是对student的内容按行处理,每行使用空格进行切割,切割后,第一列称为$1,第二列称为$2,未切割的原始数据是$0,print就是在屏幕上输出对应变量的值。

3.输入:cat/etc/password

   输出:root(用户):x:0(user id用户id):0(用户组对应id):root(全名):/root(家目录):/bin/bash(使用的命令提示符的执行程序/shell程序)

4.cat /etc/password | awk -F ':' 'BEGIN{print "username\t\t\thomedir"}{print $1"\t\t\t"$6}'------ 这条命令的作用是,把cat /etc/passwd的输出结果,按行处理,每行使用英文冒号进行切割,必须要用 -F : 来指定切割符,先打印 username3个制表符homedir,再另起一行,开始打印原来输出结果中切割后的第1列和第6列,两列之间使用3个制表符进行间隔。

5.cat /etc/password | awk BEGIN{count = 0}{count++}END{print "count=",count }' 这条命令的作用是将把cat /etc/password 的输出内容的行数计算,并最终输出。

6.BEGIN{}里面的内容只会在开始执行一次,通常可以用来声明与初始化一些变量。然后紧接的{}里面的内容,会按行,每行都会执行一次,通常用来写一些对行内容进行处理的逻辑。

7.END{}里面的内容只会在上面的逻辑执行结束后,最后收尾执行一次,通常可以用来执行最终输出的结果。

8.通常AWK的使用场景是类似于下面的

    (1)cat ...| awk 'BEGIN{} {} END {}'

    (2)cat /etc/password | awk -F ':' BEGIN{homedir = ""}{if{$1="lauhank" {homedir=$6;}} END{print "homedir=",homedir}}'这条命令的目的是在cat /etc/passwd的输出中,按英文冒号切割每行,找到lauhank这个用户名对应的家目录的名称。

9.root:x:0:0:root:/root:/bin/bash  ------ 家目录在第六列

10.[root@localhost ~]# cat /etc/passwd | awk -F':' '{if($1=="root"){print $1"\t\t"$6}}'(root是字符串要加双引号,如果不加会当做变量处理)

     输出:root /root

11.[root@localhost ~]# cat /etc/passwd | awk -F':' '{if($1=="root" || $1=="cat"){print $1"\t\t"$6}}'

     输出:root /root

     cat /home/cat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值