本章命令:

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. 第七章节 BJROBOT 选择区域自主构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】

    1.把小车平放在地板上,用资料里的虚拟机,打开一个终端 ssh 过去主控端启动roslaunch znjrobot bringup.launch 2.在虚拟机端再打开一个终端,ssh 过去主控端启动r ...

  2. spring boot(一):什么是spring boot

    什么是spring boot 官网说的很清晰 一.Overview Spring Boot makes it easy to create stand-alone, production-grade ...

  3. 手写实现JDK的动态代理

    Person接口 package com.zhoucong.proxy.jdk; public interface Person { // 寻找真爱 void findlove(); } 人物实现类 ...

  4. Cocos Creator 新资源管理系统剖析

    目录 1.资源与构建 1.1 creator资源文件基础 1.2 资源构建 1.2.1 图片.图集.自动图集 1.2.2 Prefab与场景 1.2.3 资源文件合并规则 2. 理解与使用 Asset ...

  5. linux find命令用法大全

    本文档格式如下,命令说明在命令的上一行,尝试使用 Ctrl+f 组合键快速在页面内搜索. 命令说明 命令     参数起始目录:查找文件的起始目录.实例# 当前目录搜索所有文件,文件内容 包含 &qu ...

  6. LeetCode117 每个节点的右向指针 II

    给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每个 ...

  7. GCC 概述:C 语言编译过程详解

    Tags: C Description: 关于 GCC 的个人笔记 GCC 概述 对于 GCC 6.1 以及之后的版本,默认使用的 C++ 标准是 C++ 14:使用 -std=c++11 来指定使用 ...

  8. 2021年正确的Android逆向开发学习之路

    2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...

  9. LeetCode454. 四数相加 II

    题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 分析 关键是如何想到用 ...

  10. 学习Java第三天

    方法重载:同一个类,方法名相同,参数不同(个数不同,类型不同,顺序不同),判断是否重载,只看方法名和参数,跟返回值无关. IDEA查看方法源代码:Crtl + 鼠标左键 进制表示 Java数值默认为十 ...