设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 53|回复: 4

如何实现跨行操作(sed awk grep ...)?搞定,谢谢tinyfish

[复制链接]

8

主题

222

回帖

516

积分

高级会员

积分
516
发表于 2020-4-1 13:12:32 | 显示全部楼层 |阅读模式
本帖最后由 llyang 于 2020-4-1 13:57 编辑

文件 myserver.conf 内容如下:

[ol]
  • server {
  •     listen 80;
  •     listen [::]:80;
  • }
  • server {
  •     listen 443 ssl http2;
  • }
  • server {
  •     listen 1080;
  •     listen [::]:1080;
  • }
  • [/ol]复制代码

    cat myserver.conf | sed -n '/^server/,/^}/p'
    这样就成了全选择

    我想单独选择每个段落
    只选包含80区域(line 1-4),只选443区域(line 5-7),只选1080区域(line 8-11) -- server { ... }



    百度下、谷歌下的“高手”,请你绕行,谢谢

  • 回复

    使用道具 举报

    0

    主题

    309

    回帖

    702

    积分

    高级会员

    积分
    702
    发表于 2020-4-1 13:31:50 | 显示全部楼层
    本帖最后由 tinyfish 于 2020-4-1 13:37 编辑

    只会 awk 的……
    "



    PS:是gawk……
    回复

    使用道具 举报

    8

    主题

    901

    回帖

    1832

    积分

    金牌会员

    积分
    1832
    发表于 2020-4-1 13:57:00 | 显示全部楼层
    vim可以做到单独选择段落用正则处理,具体怎么操作忘了

    回复

    使用道具 举报

    9

    主题

    69

    回帖

    193

    积分

    注册会员

    积分
    193
    发表于 2020-4-1 13:17:50 | 显示全部楼层

    这是最好的年代 发表于 2020-4-1 13:20

    vim可以做到单独选择段落用正则处理,具体怎么操作忘了

    vim没研究过,即使行也没用,无法实现自动化

    跨行容易,特征字符也容易
    跨行+中间特征字符,我就不会了

    回复

    使用道具 举报

    8

    主题

    222

    回帖

    516

    积分

    高级会员

    积分
    516
     楼主| 发表于 2020-4-1 13:20:59 | 显示全部楼层
    本帖最后由 llyang 于 2020-4-1 13:56 编辑

    tinyfish 发表于 2020-4-1 13:31

    只会 awk 的……


    awk grep都行哈,能到达效果就好。

    那我修改下题目吧

    有点效果,但是没有显示全部段落, 到443所在行就没了

    [ol]
  • cat myserver.conf | awk '$0~str{sub(".","server&");print}' RS='server' ORS='' str="443"
  • [/ol]复制代码

    搞定,谢谢你
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2026-2-14 10:08 , Processed in 0.015278 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表