sed 删除匹配行的指定字符串
这里以nginx配置文件为例,修改日志格式。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
改成
log_format main '[$time_iso8601] - $remote_addr "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
这需要匹配log_format
这行,删除[$time_local]
字符串,其余做替换即可。
- 第一步:
# sed "s/\$remote_addr/[\$time_iso8601]/" 1.txtlog_format main '[$time_iso8601] - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
- 第二步:
# sed -e "s/\$remote_addr/[\$time_iso8601]/" -e "s/\$remote_user/\$remote_addr/" 1.txtlog_format main '[$time_iso8601] - $remote_addr [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
- 第三步:
# sed -e "s/\$remote_addr/[\$time_iso8601]/" -e "s/\$remote_user/\$remote_addr/" -e "s/\[\$time_local\] //" 1.txtlog_format main '[$time_iso8601] - $remote_addr "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
另外,如果想在一行行尾增加字符串,通常是这样做:
# sed 's/$/aaa/' file1 # ^表示行首,$表示行尾
但如果将
access_log /usr/local/nginx/logs/$SERVICE_access.log;
改成
access_log /usr/local/nginx/logs/$SERVICE_access.log json;
用上面的方法是不可行的,还是需要替换字符串
# cat 2.txtaccess_log /usr/local/nginx/logs/aaaaa_access.log;# SERVICE=aaaaa; sed "s/\/usr\/local\/nginx\/logs\/"$SERVICE"_access.log;/\/usr\/local\/nginx\/logs\/"$SERVICE"_access.log json;/" 2.txtaccess_log /usr/local/nginx/logs/aaaaa_access.log json;
其实不是$name要加双引号,而只是用于结束前面的双引号,和再开始后面的双引号,从而将$name置入双引号外面的shell环境中,才能得到shell解析。双引号内为sed环境。
sed 删除匹配行的指定字符串相关推荐
- sed删除匹配行的上一行和下一行
1.删除匹配行的上一行和下一行: sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file 2.sed中使用变量,删除匹配行的上一行和下一行: ...
- 使用sed删除匹配行的上一行和下一行
1.删除匹配行的上一行和下一行: sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file 2.sed中使用变量,删除匹配行的上一行和下一行: ...
- sed 删除匹配行的前后行
2019独角兽企业重金招聘Python工程师标准>>> 删除匹配行的前后行 删除匹配行的下一行 sed -ne 'p;/niyaopipeideneirong/n' nidewenj ...
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
原文链接: https://zhidao.baidu.com/question/2138070399877009148.html 修改语法,用#代替",这个只能用在sed的s替换命令中,如: ...
- LINUX使用sed删除匹配行
具体来说: TEXT=ts-office.desktop FILE=mimeapps.list sed -i "/${TEXT}/"d ${FILE} 当然,两个变量也可以直接写进 ...
- linux bash shell sed 删除匹配行
[yeqiang@harbor tmp]$ cat a.txt aaa bbb ccc [yeqiang@harbor tmp]$ sed -i '/aaa/d' a.txt [yeqiang@har ...
- 用sed删除匹配到字符串的行
用sed删除匹配到字符串的行: 语法:sed-i'/关键字符/d'文件名 举例1:匹配"\etc\install.sh" set -i '/\/etc\/install.sh/d' ...
- 【shell】笔记|去重复行|删除匹配行|反选删除|反向显示|加减乘除
目录 配置 bash Shell忽略命令大小写 |按"上"键显示该命令的历史 shell 删除匹配行 shell 获取结果中的第n列,第n行 grep过滤 shell 注释块 Li ...
- sed在匹配行前面或者后面插入一行
在匹配的行后面插入一行: sed -i '/匹配行pattern/a\新插入的行' 新插入的行或者匹配行如果有特殊字符,记得转义. 也可以是: sed -i '/匹配行pattern/a 新插入的行' ...
最新文章
- 使用Ef框架进行分页..EF模糊查询..EF多表内连接查询
- C语言博客作业--字符数组
- docker image镜像的发布
- C# WPF 表单更改提示
- 图解TCPIP-传输层 端口
- php 类别名,关于php:从类别ID laravel获取类别名称
- matlab画图不显示中文_[过时] [LaTeX 使用] 升级 macOS 10.15 后 ctex 文档不显示中文的临时方案...
- 用JS做关灯游戏(初级)
- jquery video全屏_帮助你生成全屏视频背景的超棒jQuery插件 BigVideo.js
- base64、File、Blob、ArrayBuffer互转
- Spring Boot ContentNegotiation 内容协商
- vscode格式化报错
- VB程序启动后如何在通知区域显示
- AirPods Pro 一直断线?如何修复
- 【读论文】基于三支决策的不平衡数据过采样方法
- 做完这套面试题,你才敢说懂Excel
- 《活法》读后感--发paper思想准备
- Android11 读写权限申请
- 最新研究进展:关于机器翻译领域,这4个要点不得不关注
- 春节小游戏之图片分类(Pytorch模型部署)
热门文章
- Chrome浏览器地址栏https显示红叉和删除线,无法打开网站
- Github 曾经登顶热榜Top1的女装项目现状
- 290. 单词规律。
- Java入门你值得拥有!java创建长度为n的数组
- ISCSLP 2022丨ICSRC 2022 智能座舱语音识别挑战赛
- html怎么调用node.js,javascript – 在HTML中使用Node.js模块
- Word表格单元格中放入图片,如何让图片充满整个单元格
- 关于计算机的英语手抄报简单,简单漂亮的英语手抄报图片大全
- fiddler中会话数据图标的含义
- 支持PHP运行环境和系统防火墙配置管理,1Panel开源面板v1.1.0发布