查看: 59|回复: 4

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

[复制链接]

8

主题

223

回帖

520

积分

高级会员

积分
520
发表于 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

    主题

    314

    回帖

    714

    积分

    高级会员

    积分
    714
    发表于 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

    主题

    223

    回帖

    520

    积分

    高级会员

    积分
    520
     楼主| 发表于 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]复制代码

    搞定,谢谢你
  • 回复

    使用道具 举报

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

    本版积分规则

    关注公众号

    相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

    Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

    在本版发帖
    关注公众号
    返回顶部