这里以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 删除匹配行的指定字符串相关推荐

  1. sed删除匹配行的上一行和下一行

    1.删除匹配行的上一行和下一行: sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file 2.sed中使用变量,删除匹配行的上一行和下一行: ...

  2. 使用sed删除匹配行的上一行和下一行

    1.删除匹配行的上一行和下一行: sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file 2.sed中使用变量,删除匹配行的上一行和下一行: ...

  3. sed 删除匹配行的前后行

    2019独角兽企业重金招聘Python工程师标准>>> 删除匹配行的前后行 删除匹配行的下一行 sed -ne 'p;/niyaopipeideneirong/n' nidewenj ...

  4. Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法

    原文链接: https://zhidao.baidu.com/question/2138070399877009148.html 修改语法,用#代替",这个只能用在sed的s替换命令中,如: ...

  5. LINUX使用sed删除匹配行

    具体来说: TEXT=ts-office.desktop FILE=mimeapps.list sed -i "/${TEXT}/"d ${FILE} 当然,两个变量也可以直接写进 ...

  6. linux bash shell sed 删除匹配行

    [yeqiang@harbor tmp]$ cat a.txt aaa bbb ccc [yeqiang@harbor tmp]$ sed -i '/aaa/d' a.txt [yeqiang@har ...

  7. 用sed删除匹配到字符串的行

    用sed删除匹配到字符串的行: 语法:sed-i'/关键字符/d'文件名 举例1:匹配"\etc\install.sh" set -i '/\/etc\/install.sh/d' ...

  8. 【shell】笔记|去重复行|删除匹配行|反选删除|反向显示|加减乘除

    目录 配置 bash Shell忽略命令大小写 |按"上"键显示该命令的历史 shell 删除匹配行 shell 获取结果中的第n列,第n行 grep过滤 shell 注释块 Li ...

  9. sed在匹配行前面或者后面插入一行

    在匹配的行后面插入一行: sed -i '/匹配行pattern/a\新插入的行' 新插入的行或者匹配行如果有特殊字符,记得转义. 也可以是: sed -i '/匹配行pattern/a 新插入的行' ...

最新文章

  1. 使用Ef框架进行分页..EF模糊查询..EF多表内连接查询
  2. C语言博客作业--字符数组
  3. docker image镜像的发布
  4. C# WPF 表单更改提示
  5. 图解TCPIP-传输层 端口
  6. php 类别名,关于php:从类别ID laravel获取类别名称
  7. matlab画图不显示中文_[过时] [LaTeX 使用] 升级 macOS 10.15 后 ctex 文档不显示中文的临时方案...
  8. 用JS做关灯游戏(初级)
  9. jquery video全屏_帮助你生成全屏视频背景的超棒jQuery插件 BigVideo.js
  10. base64、File、Blob、ArrayBuffer互转
  11. Spring Boot ContentNegotiation 内容协商
  12. vscode格式化报错
  13. VB程序启动后如何在通知区域显示
  14. AirPods Pro 一直断线?如何修复
  15. 【读论文】基于三支决策的不平衡数据过采样方法
  16. 做完这套面试题,你才敢说懂Excel
  17. 《活法》读后感--发paper思想准备
  18. Android11 读写权限申请
  19. 最新研究进展:关于机器翻译领域,这4个要点不得不关注
  20. 春节小游戏之图片分类(Pytorch模型部署)

热门文章

  1. Chrome浏览器地址栏https显示红叉和删除线,无法打开网站
  2. Github 曾经登顶热榜Top1的女装项目现状
  3. 290. 单词规律。
  4. Java入门你值得拥有!java创建长度为n的数组
  5. ISCSLP 2022丨ICSRC 2022 智能座舱语音识别挑战赛
  6. html怎么调用node.js,javascript – 在HTML中使用Node.js模块
  7. Word表格单元格中放入图片,如何让图片充满整个单元格
  8. 关于计算机的英语手抄报简单,简单漂亮的英语手抄报图片大全
  9. fiddler中会话数据图标的含义
  10. 支持PHP运行环境和系统防火墙配置管理,1Panel开源面板v1.1.0发布