Linux基础(day29)
时间:2022-04-27
本文章向大家介绍Linux基础(day29),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
sed扩展
- 一. 打印某行到某行之间的内容
- 打印某一行到某一行之间的内容
- 需求:
例如:有个文件test的内容如下:
ert
fff
**
[abcfd]
123
324
444
[rty]
**
fgfgf
怎么能截取
[abcfd]
123
324
444
[rty]
这一部分出来呢?
- 实现:
[root@hf-01 sed]# sed -n '/[abcfd]/,/[rty]/'p 1.txt //截取[abcfd]到[rty]之间的内容
[abcfd]
123
324
444
[rty]
[root@hf-01 sed]#
- 这里不能加-r 参数,只能使用 脱义字符(有可能是逗号 , 的存在,导致加-r 参数无法正常全部脱义)
- 扩展知识
- 查看某一段时间的日志
- sed -n '/03/Mar/2016:02:52/,/03/Mar/2016:03:03:20/'p /usr/local/nginx/logs/cn.log |awk '{print $1}'|sort|uniq -c|sort -rn
- 查看某一段时间的日志
- 二. sed转换大小写
-
- 把每个单词的第一个小写字母变成大写
[root@hf-01 sed]# sed 's/b[a-z]/u&/'g test.txt //把每个单词的第一个小写字母变成大写
Root:X:0:0:Root:/Root:/Bin/Bash
Bin:X:1:1:Bin:/Bin:/Sbin/Nologin
Adas:124:Bdsf:Rto:Pass
Daemon:X:2:2:Daemon:/Sbin:/Sbin/Nologin
Dfdf:Rggo:124
等等等,只截取了一部分
[root@hf-01 sed]#
[root@hf-01 sed]# sed 's/[a-z]/u&/'g test.txt //把文件中所有小写字母变成大写
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
ADAS:124:BDSF:RTO:PASS
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
DFDF:RGGO:124
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
等等等,只截取了一部分
[root@hf-01 sed]#
- 在使用-i 参数后,会直接更改文件内容
- sed -i 's/[a-z]/u&/'g test.txt
-
- 大写变小写
[root@hf-01 sed]# sed 's/[A-Z]/l&/'g test.txt //把文件中所有的大写字符变成小写
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adas:124:bdsf:rto:pass
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dfdf:rggo:124
等等等,只截取了一部分
[root@hf-01 sed]#
总结
- b 表示单词的边界
- & 表示 第一个 // 里面的内容
- u表示大写
- l表示小写
- 三. sed在某一行最后添加一个数字
[root@hf-01 sed]# head -n1 test.txt |sed 's/(^r.*)/1 12/' //在以r 字母开头的行,结尾处添加数字123
root:x:0:0:root:/root:/bin/bash 12
[root@hf-01 sed]# head -n1 test.txt |sed 's/(^r.*)/& 123/' //在以r 字母开头的行,结尾处添加数字123
root:x:0:0:root:/root:/bin/bash 123
[root@hf-01 sed]# head -n1 test.txt |sed 's/(^r.*)/1 123/' //这里是将以r 字母开头的行,替换成1 123
1 123
- 这里的 1 应该指的是前面 // 的内容
- & 表示 第一个 // 里面的内容
- 扩展知识
- 在含有root行前面添加字符abc字符串和一个空格
- sed '/root/s/^/abc /' test.txt
- 在以第一个root开头的行到以一个bin开头的行的后面添加abc和空格
- sed '/^mail>/,/^ftp>/s/$/ abc/' test.txt
- 在含有root行前面添加字符abc字符串和一个空格
- 四. 删除某行到最后一行
- sed删除某关键字的下一行到最后一行
- 格式 sed -i '/sample/{N;d}' filename
- //sample是匹配字符
- N在这里就是下一行
- d是删除
- 需求
- 格式 sed -i '/sample/{N;d}' filename
[root@test200 ~]# cat test
a
b
c
d
e
f
[root@test200 ~]# sed '/c/{p;:a;N;$!ba;d}' test
a
b
c
- 分析
- 首先匹配,匹配到c这行
- 后面定义一个标签,开始循环,下一行一直到结尾都放到模式空间(缓冲区)
- 然后删除模式空间,打印出结果
- if 匹配"c"
- :a
- 追加下一行
- if 不匹配"$"
- goto a
- 最后退出循环,d命令删除。
- 五. 打印1到100行含某个字符串的行
- 使用sed打印1到100行包含某个字符串的行
sed -n '1,100{/abc/p}' 1.txt
- 指定多个字符
sed -n '1,100{/abc/p;/dd/p}' 2.txt
- sed -n :不重复打印
- -n和p参数一起使用
- 如何调用finecms指定栏目的描述关键词
- finecms栏目文章页seo设置
- Logistic回归实战篇之预测病马死亡率(一)
- DedeCMS后台500错误一种原因是不支持PHP5.3、5.4及以上版本
- finecms指定从第几篇文章开始调用5条记录,并调用文章所在栏目
- finecms如何调用多个栏目的子栏目
- 从傅立叶变换到Gabor滤波器
- 三个小时学会wordpress模板制作
- The each() function is deprecated报错的解决方法
- 书接上文:薛定谔的猫是如何诞生的?
- docker源码分析(3)---镜像(1)
- k8s源码分析-----kubelet(8)pod管理
- 大会 | DiracNets:无需跳层连接的ResNet
- golang时间戳格式化与解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现二维数组按照指定的字段进行排序算法示例
- python怎么自定义捕获错误
- Codeforces Round #677 (Div. 3)
- PHP PDOStatement::fetchObject讲解
- PHP PDOStatement::getAttribute讲解
- Laravel框架自定义验证过程实例分析
- Codeigniter里的无刷新上传的实现代码
- django ObjectDoesNotExist 和 DoesNotExist的用法
- PHP PDOStatement::closeCursor讲解
- 使用python实现下载我们想听的歌曲,速度超快
- JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
- OpenCV4.1.0+VS2017环境配置的方法步骤
- 详解如何实现Laravel的服务容器的方法示例
- laravel 数据迁移与 Eloquent ORM的实现方法
- PDO::query讲解