本章命令:

1 2 3 4 5 6
grep cut sort uniq seq tr

1、grep

作用:过滤文本内容

选项 描述
-E :--extended--regexp 模式是扩展正则表达式(ERE)
-i :--ignore--case 忽略大小写
-n: --line--number 打印行号
-o:--only--matching 只打印匹配的内容
-c:--count 只打印每个文件匹配的行数
-B:--before--context=NUM 打印匹配的前几行
-A:--after--context=NUM 打印匹配的后几行
-C:--context=NUM 打印匹配的前后几行
--color[=WHEN] 匹配的字体颜色,别名已定义了
-v:--invert--match 打印不匹配的行
-e 多点操作eg:grep -e "^s" -e "s$"

样本文件内容

[root@ken ~]# cat test
dlakdlad
ad
ad
a
dFSAF
A
F
F
AS
F
f
sf
as
f

实例1:打印出所有的a无论大小写 : -i选项

╭─root@localhost.localdomain ~
╰─➤ grep -i “a” test
dlakdlad
ad
ad
a
dFSAF
A
AS
as

实例2:打印出所有的a无论大小写,并且显示该字符串所在的行 : -n选项

╭─root@localhost.localdomain ~
╰─➤ grep -i -n “a” test
1:dlakdlad
2:ad
3:ad
4:a
5:dFSAF
6:A
9:AS
13:as

实例3:仅仅打印出所有匹配的字符串: -o选项

╭─root@localhost.localdomain ~
╰─➤ grep -i -o “a” test
a
a
a
a
a
A
A
A
a

实例4:打印出匹配的字符串有多少行 -c选项

╭─root@localhost.localdomain ~
╰─➤ grep -i -c “a” test
8

实例5:打印出字符S前面的2行 -B

╭─root@localhost.localdomain ~
╰─➤ grep -B 2 “S” test
ad
a
dFSAF

F
F
AS

实例6:打印出字符S后面的2行 -A

╭─root@localhost.localdomain ~
╰─➤ grep -A 2 “S” test
dFSAF
A
F

AS
F
f

实例7:打印出字符S前后2行 -C

╭─root@localhost.localdomain ~
╰─➤ grep -C 2 “S” test
ad
a
dFSAF
A
F
F
AS
F
f

实例8:打印出不包含大小s的所有行 取反 -v

╭─root@localhost.localdomain ~
╰─➤ grep -i -v “s” test
dlakdlad
ad
ad
a
A
F
F
F
f
f

grep可以从文件当中直接搜索某个关键词,也可以从标准输入里面搜错

╭─root@localhost.localdomain ~
╰─➤ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
╭─root@localhost.localdomain ~
╰─➤ cat /etc/passwd | grep “root”
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

2.cut

-c :以字符为单位进行分割。

-d :自定义分隔符。

-f :与-d一起使用,指定显示哪个区域。

实例1:获取6位随机加密数

╭─root@localhost.localdomain ~
╰─➤ echo $RANDOM | md5sum | cut -c 1-6
bb2788
╭─root@localhost.localdomain ~
╰─➤ echo $RANDOM | md5sum | cut -c 1-6
45a0e0

实例2:截取指定的字符串

╭─root@localhost.localdomain ~
╰─➤ echo “abcd” | cut -c 2
b

实例3:截取出来/etc/passwd用户名

╭─root@localhost.localdomain ~
╰─➤ cat /etc/passwd | cut -d “:” -f 1
root
bin
daemon
adm
lp
sync
shutdown
halt

实例4:截取出来/etc/passwd用户的shell类型

╭─root@localhost.localdomain ~
╰─➤ cat /etc/passwd | cut -d “:” -f 7
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown

实例5:截取出来/etc/passwd用户以及shell类型

╭─root@localhost.localdomain ~
╰─➤ cat /etc/passwd | cut -d “:” -f 1,7
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt

3.sort

-k:根据切割后的那一段进行排序

-n 依照数值的大小排序(默认是根据字符进行排序)。

-r 以相反的顺序来排序。

-t<分隔字符> 指定排序时所用的栏位分隔字符。

-u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)

演示文件

╭─root@localhost.localdomain ~
╰─➤ cat test
12
23
2
3
5

实例1:以数字排序 -n

╭─root@localhost.localdomain ~
╰─➤ sort test
12
2
23
3
5
╭─root@localhost.localdomain ~
╰─➤ sort -n test
2
3
5
12
23

实例2:降序排序

╭─root@localhost.localdomain ~
╰─➤ sort -n -r test
23
12
5
3
2

实例3:降序排序并取出前3行

╭─root@localhost.localdomain ~
╰─➤ sort -n -r test | head -3
23
12
5

演示文件

╭─root@localhost.localdomain ~
╰─➤ cat test
12:3
23:4
2:12
3:5
5:23

实例4:以冒号为分隔符,第二列进行数字降序排序

╭─root@localhost.localdomain ~
╰─➤ cat test | sort -t “:” -k2 -n -r
5:23
2:12
3:5
23:4
12:3

演示文本:

╭─root@localhost.localdomain ~
╰─➤ cat test
12:3
12:3
12:3
12:3
23:4
2:12
3:5
3:5
3:5
3:5
5:23

实例5:显示行并去除重复行

╭─root@localhost.localdomain ~
╰─➤ sort -u test
12:3
2:12
23:4
3:5
5:23

4. uniq

-c:(count)在行首用数字表示该行出现了多少次

-u:仅仅显示那些没有出现重复过的行

演示文件

╭─root@localhost.localdomain ~
╰─➤ cat test
12:3
12:3
12:3
12:3
23:4
2:12
3:5
3:5
3:5
3:5
5:23

实例1:统计每行出现的次数

╭─root@localhost.localdomain ~
╰─➤ uniq -c test
4 12:3
1 23:4
1 2:12
4 3:5
1 5:23

实例2:演示没有出现出重复行的数量

╭─root@localhost.localdomain ~
╰─➤ uniq -u test
23:4
2:12
5:23

5、seq

实例1:

╭─root@localhost.localdomain ~
╰─➤ seq 5
1
2
3
4
5

实例2:

╭─root@localhost.localdomain ~
╰─➤ seq 2 5
2
3
4
5

实例3:

╭─root@localhost.localdomain ~
╰─➤ seq 2 2 10 #第一个2是起始位,第二个2是步长,第三个10是终止位
2
4
6
8
10

实例4:取出100以内所有的奇数

╭─root@localhost.localdomain ~
╰─➤ seq 1 2 100
1
3
5
7
9
11
13
15
17

实例5:取出100以内所有的偶数

╭─root@localhost.localdomain ~
╰─➤ seq 2 2 100
2
4
6
8
10
12
14
16

6.tr命令:命令用于转换或删除文件中的字符

-d:删除指定的字符串

实例1:把所有的小写字母都转化为大写字母

╭─root@localhost.localdomain ~
╰─➤ echo “daadadfaedqdac” | tr a-z A-Z
DAADADFAEDQDAC

实例2:把所有的大写字母都转化为小写字母

╭─root@localhost.localdomain ~
╰─➤ echo “SDSDA2WZFAF” | tr A-Z a-z
sdsda2wzfaf

实例3:删除一行中的空格

╭─root@localhost.localdomain ~
╰─➤ echo “ada dada dada” | tr -d ” ”
adadadadada

应用实例:获取主机IP地址

╭─root@localhost.localdomain ~
╰─➤ ip a | grep global | cut -d " " -f 6 | cut -d "/" -f1
192.168.80.3

应用实例:获取6位随机密码

╭─root@localhost.localdomain ~
╰─➤ echo $RANDOM |md5sum|cut -c 1-6
6a492b
╭─root@localhost.localdomain ~
╰─➤ echo $RANDOM |md5sum|cut -c 1-6
aee13f

7、 basename 和 dirname

# basename:取出基名即文件名
[root@c43i08102.cloud.i09.amtest90 /etc/sysconfig/network-scripts]
#basename `pwd`
network-scripts
# dirname:取出目录名
[root@c43i08102.cloud.i09.amtest90 /etc/sysconfig/network-scripts]
#dirname `pwd`
/etc/sysconfig

linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)的更多相关文章

  1. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  2. 【原创】Linux基础之Shell脚本常用命令

    #!/bin/sh 1 取脚本参数 $# 参数个数$0 当前脚本名$1 第1个参数$n 第n个参数$* 所有参数$@ 所有参数$? 上个命令的状态$$ 当前pid 2 日期 $ dateWed Mar ...

  3. linux下使用shell脚本批处理命令

    1.新建脚本touch first.sh 2.写入命令vi first.sh #!/bin/bash #publish service and api echo "copy file&quo ...

  4. Linux Shell 高级编程技巧4----几个常用的shell脚本例子

    4.几个常用的shell脚本例子    4.0.在写脚本(同样适用在编程的时候),最好写好完善的注释    4.1.kill_processes.sh(一个杀死进程的脚本) #!/bin/bash c ...

  5. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  6. 【转】常用的shell脚本

    from:http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html 常用的shell脚本 (2012-10-10 22:09:07) 转载▼ 标签: 杂 ...

  7. shell脚本常用参数

    shell 脚本 常用参数 #!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell sh -x # 执行过程 sh -n # 检查语法 (a=bbk ...

  8. shell脚本常用技巧

    shell脚本常用技巧 1.获取随机字符串或数字 ~]#echo $RANDOM | md5sum | cut -c 1-6 ~]#openssl rand -base64 4 | cut -c 1- ...

  9. shell 脚本控制命令的执行顺序

    &&,||,(),{},& 五个符号的运用shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功.而&&和||就是用来判断前一个命令执行效果的. 也 ...

随机推荐

  1. 6.裸机C语言控制LED

    C语言版LED灯 汇编完成C语言的环境配置 C语言完成点亮LED灯 程序编写 汇编程序start.S .global _start /* 全局标号 */ /* * 描述: _start函数,程序从此函 ...

  2. 设计模式之单例模式(Singleton Pattern)深入浅出

    单例模式介绍:单例模式是指确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局的访问点.隐藏其所有构造方法,属于创新型模式. 常见的单例有:ServletContext.ServletConfi ...

  3. NOIP初赛篇——01计算机常识

    发展历史 年代划分 代别 年代 逻辑(电子)元件 第一代 1946-1958 电子管 第二代 1959-1964 晶体管 第三代 1965-1970 集成电路 第四代 1971-至今 大规模.超大规模 ...

  4. Java高并发与多线程(一)-----概念

    其实之前一直想专门写一篇,单独说一说Java的多线程与高并发,但是一直以来,都没有想到能够用什么比较有趣的表现形式去表达出来,而且网上充斥着很多类似的博客,有好的又不好的,有简介的有繁琐的,所以也一直 ...

  5. Angular入门到精通系列教程(10)- 指令(Directive)

    1. 摘要 2. 组件与指令之间的关系 2.1. 指令的种类 3. Angular 中指令的用途 4. 指令举例 4.1. 指令功能 4.2. Anuglar CLI生成基本文件 4.3. Direc ...

  6. pthread 读写锁

    pthread 读写锁 (Read Write Lock, rwlock) 把对共享资源的访问者分为读者和写者,读者仅仅对共享资源进行读访问,写者仅仅对共享资源进行写操作. 如果使用互斥量 mutex ...

  7. 《犬夜叉2021》我想通过Binder找到你

    前言 本故事纯属虚构,如有不通顺的逻辑请轻喷.️ <犬夜叉2021> 第一章:我还能找到你吗,阿篱 犬夜叉和奈落大决战之后,四魂之玉.食骨之井消失,谁也不知道去了哪,而犬夜叉和阿篱再次被分 ...

  8. python基础学习总结

    python管理cisco设备:http://www.linuxeye.com/program/1680.html 学习:https://www.liaoxuefeng.com/wiki/001431 ...

  9. Shiro的认证与授权

    shiro实战教程 一.权限管理 1.1什么是权限管理 基本上涉及到用户参与的系统都需要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以 ...

  10. 【排序基础】5、插入排序法 - Insertion Sort

    插入排序法 - Insertion Sort 文章目录 插入排序法 - Insertion Sort 插入排序设计思想 插入排序代码实现 操作:插入排序与选择排序的比较 简单记录-bobo老师的玩转算 ...