linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)
本章命令:
| 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)的更多相关文章
- linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆
场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...
- 【原创】Linux基础之Shell脚本常用命令
#!/bin/sh 1 取脚本参数 $# 参数个数$0 当前脚本名$1 第1个参数$n 第n个参数$* 所有参数$@ 所有参数$? 上个命令的状态$$ 当前pid 2 日期 $ dateWed Mar ...
- linux下使用shell脚本批处理命令
1.新建脚本touch first.sh 2.写入命令vi first.sh #!/bin/bash #publish service and api echo "copy file&quo ...
- Linux Shell 高级编程技巧4----几个常用的shell脚本例子
4.几个常用的shell脚本例子 4.0.在写脚本(同样适用在编程的时候),最好写好完善的注释 4.1.kill_processes.sh(一个杀死进程的脚本) #!/bin/bash c ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- 【转】常用的shell脚本
from:http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html 常用的shell脚本 (2012-10-10 22:09:07) 转载▼ 标签: 杂 ...
- shell脚本常用参数
shell 脚本 常用参数 #!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell sh -x # 执行过程 sh -n # 检查语法 (a=bbk ...
- shell脚本常用技巧
shell脚本常用技巧 1.获取随机字符串或数字 ~]#echo $RANDOM | md5sum | cut -c 1-6 ~]#openssl rand -base64 4 | cut -c 1- ...
- shell 脚本控制命令的执行顺序
&&,||,(),{},& 五个符号的运用shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功.而&&和||就是用来判断前一个命令执行效果的. 也 ...
随机推荐
- mysql数据库限制多次登录失败,限定用户重试时间
前言 最近的项目开始进行安全测试,其中有一个安全问题是这样的. 应该增加用户登录失败处理功能,限制非法登录次数. 建议是增加mysql数据库的登陆失败的锁定功能. 相信大家也都会遇到这样的问题,在这里 ...
- UML第二次结对作业
|作业要求|https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11250| | ---------- | ----------------- ...
- Dockerfile文件说明
文件说明 此文件用于docker镜像文件的制作 基本结构 Dockerfile文件由行命令组成,以#开头注释行 一般分为四部分,基础镜像信息.维护者信息.镜像操作指令和容器启动执行指令. 例如 #De ...
- DB2在渗透中的应用(转载)
原文地址:http://drops.wooyun.org/tips/16673 0x00 DB2简介 DB2是IBM公司推出关系型数据库管理系统. 现今DB2主要包含以下三个系列: DB2 for L ...
- Lesson_strange_words6
stylized 有艺术效果的 slide 幻灯片,滑动 template 模板,样板 grasp 掌握,领悟 factor 因素 twisted pair cable 双绞线 twisted 扭曲的 ...
- 【Java集合】HashSet源码解析以及HashSet与HashMap的区别
HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...
- 使用 C# 9 的records作为强类型ID - 初次使用
强类型ID 实体通常是整数,GUID或者string类型,因为数据库直接支持这些类型,但是,如果实体的ID的类型是一样的,比如都是整数的ID,这有可能会出现ID值传错的问题,看下边的示例. publi ...
- 无限重置IDE过期时间插件 亲测可以使用
相信破解过IDEA的小伙伴,都知道jetbrains-agent这个工具,没错,就是那个直接拖入到开发工具界面,一键搞定,so easy的破解工具!这个工具目前已经停止更新了,尽管还有很多小伙伴在使用 ...
- Spring MVC 接收 LocalDate、LocalTime 和 LocalDateTime Java 8 时间类型参数
使用 Spring MVC 时,很多业务场景下 Controller 需要接收日期时间参数.一个简单的做法是使用 String 接收日期时间字符串(例如:2020-01-29),然后在代码中将其转换成 ...
- 【EXP】WINDOWS下如何导出
有些时候需要在windows下通过远程来导出数据 那么windows下怎么导出呢 例子: exp hr/hr@192.168.1.222:1521/zhang file=d:backup.dmp lo ...