Teng's blog Teng's blog
首页
Java
H5前端
GitHub (opens new window)
首页
Java
H5前端
GitHub (opens new window)
  • 介绍

  • 安装

  • 基础

  • shell

    • 介绍
    • 入门
    • 系统变量
    • 自定义变量
    • 环境变量
    • 位置参数变量
    • 预定义变量
    • 运算符
    • 条件判断
    • 流程控制
    • 读取控制台输入
    • 系统函数-路径文件名
    • 自定义函数
    • 工具
      • cut 剪切数据
      • sed 流式编辑器
      • awk 文本分析
      • sort 文件内容排序
    • 数据库备份案例
  • 面试与总结
  • System-Linux
  • shell
Shetengteng
2022-02-26

工具

# cut 剪切数据

在文本中负责剪切数据,从文件的每一行剪切字节,字符,字段,并输出

基本语法

  • cut [选项参数] filename
    • 默认分隔符是制表符 tab

选项参数

  • -f 列号,提取第几列
  • -d 分隔符,按照指定分割符分割列

示例

  • 按照空格split,然后取得第1列和第11列
[root@hadoop100 sh-demo]# ifconfig | grep eth | cut -d " " -f 1,11
eth0 00:0C:29:D1:82:07
1
2

# sed 流式编辑器

一种流式编辑器,一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中(模式空间),然后用sed命令处理缓冲区的内容,处理完成后将缓冲区的内容推送屏幕,接着处理下一行,不断重复,直到文件结尾,文件内容没有改变,除非使用重定向存储输出

基本用法

  • sed [选项] 命令 filename

选项

  • -e 直接在指令模式上进行sed的动作编辑

命令

  • a 新增,a的后面可以接字串,在下一行出现
  • d 删除
  • s 查找并替换

应用实例

  • 原始文本 sed.txt 内容
dong shen
guan zhen
wo wo
lai lai
1
2
3
4
  • 将 mei nv 插入到第二行下
[root@hadoop100 sh-demo]# sed '2a mei nv' sed.txt 
dong shen
guan zhen
mei nv
wo wo
lai lai

le le
1
2
3
4
5
6
7
8
  • 在dong行下插入123
[root@hadoop100 sh-demo]# sed '/dong/a 123' sed.txt 
dong shen
123
guan zhen
wo wo
lai lai

le le
# 注意文件并没有改变
[root@hadoop100 sh-demo]# cat sed.txt 
dong shen
guan zhen
wo wo
lai lai

le le
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 删除sed.txt文件所包含的所有wo的行
[root@hadoop100 sh-demo]# sed '/wo/d' sed.txt
dong shen
guan zhen
lai lai

le le
1
2
3
4
5
6
  • 将wo替换为ni
    • g表示全部
[root@hadoop100 sh-demo]# sed 's/wo/ni/g' sed.txt
dong shen
guan zhen
ni ni
lai lai

le le
1
2
3
4
5
6
7
  • 将sed.txt 文件中的第二行删除,并将wo替换为ni
[root@hadoop100 sh-demo]# sed -e '2d' -e 's/wo/ni/g' sed.txt
dong shen
ni ni
lai lai

le le
1
2
3
4
5
6

# awk 文本分析

文本分析工具,把文件逐行读取,用空格作为默认分隔符进行切片,对每个切片进行分析处理

基本用法

  • awk [选项参数] ‘pattern1{action1} pattern2{action2} ...’ filename

说明

  • pattern
    • 表示AWK在数据中查找的内容,匹配模式,正则表达式/.../
  • action
    • 找到匹配内容时进行的命令
    • BEGIN 在所有数据读取之前执行
    • END 在所有数据执行之后执行
  • 只有匹配了pattern,才会执行action

选项参数

  • -F 指定输入文件拆分的分隔符
  • -v 赋值一个自定义变量

内置变量

  • FILENAME 文件名
  • NR 已读的记录数
  • NF 浏览记录的域的个数,切割后,列的个数

应用实例

  • 数据准备 拷贝passwd文件到当前目录
[root@hadoop100 sh-demo]# sudo cp /etc/passwd ./
[root@hadoop100 sh-demo]# cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...
1
2
3
4
5
6
7
8
  • 打印第1列和第7列
[root@hadoop100 sh-demo]# awk -F: '{print $1,$7}' passwd 
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
...
1
2
3
4
5
  • 搜索passwd 文件以root关键字开头的所有行,并输出该行的第7列
[root@hadoop100 sh-demo]# awk -F: '/^root/{print $7}' passwd 
/bin/bash
1
2
  • 多个模式下的搜索 如果2个模式都满足,那么都输出
[root@hadoop100 sh-demo]# awk -F: '/^root/{print $1} /^a/{print $1}' passwd 
root
adm
avahi-autoipd
abrt
apache
1
2
3
4
5
6
  • 搜索passwd 文件以root关机字开头的所有航,输出第1列和第7列,中间以逗号分隔
[root@hadoop100 sh-demo]# awk -F: '/^root/{print $1","$7}' passwd 
root,/bin/bash
1
2
  • 在输出的数据上添加开始和结束信息
[root@hadoop100 sh-demo]# awk -F: 'BEGIN{print "....start..."} /^root/{print $1","$7} END{print "...end..."}' passwd 
....start...
root,/bin/bash
...end...
1
2
3
4
  • 将passwd文件中用户id 增加数值1并输出
[root@hadoop100 sh-demo]#  awk -v i=1 -F : '{print $3+i}' passwd 
1
2
3
4
1
2
3
4
5
  • 对用户id进行累加输出
[root@hadoop100 sh-demo]#  awk -F : 'BEGIN{sum=0} {print $3;sum+=$3} END{print "sum="sum}' passwd 
0
1
2
3
...
501
sum=69322
1
2
3
4
5
6
7
8

# sort 文件内容排序

将文件进行排序,将排序结果进行标准输出

基本语法

  • sort (选项) (参数)

选项

  • -n 依照数值的大小排序
  • -r 以相反的顺序排序,默认从小到大排列
  • -t 设置排序时的分隔符
  • -k 指定需要排序的列

参数

  • 指定代排序的文件列表

应用实例

  • 数据准备
[root@hadoop100 sh-demo]# cat sort.txt 
bb:40:5.4
dd:20:4.2
xz:50:2.3
cls:10:3.5
ss:30:1.6
1
2
3
4
5
6
  • 按照:分隔的第三列倒叙排列
[root@hadoop100 sh-demo]# sort -t : -nrk 3 sort.txt 
bb:40:5.4
dd:20:4.2
cls:10:3.5
xz:50:2.3
ss:30:1.6

# 写法灵活
[root@hadoop100 sh-demo]# sort -nrt : -k 3 sort.txt
1
2
3
4
5
6
7
8
9
Last Updated: 2022/03/20, 10:04:55
自定义函数
数据库备份案例

← 自定义函数 数据库备份案例→

Theme by Vdoing | Copyright © 2021-2022 Shetengteng | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式