• shell脚本,awk如何处理文件中上下关联的两行。


    文件d.txt如下内容

    ggg 1
    portals: 192.168.5.41:3260
    werew 2
    portals: 192.168.5.43:3260

    如何把文件d.txt内容变为如下内容

    ggg 192.168.5.41:3260
    werew 192.168.5.43:3260

    解题思路:

    [root@localhost study]# awk '/port/{print a" "$2}{a=$1}' d.txt
    ggg 192.168.5.41:3260
    werew 192.168.5.43:3260

     '/port/{print a" "$2}{a=$1}' 

    处理第一行的时候,以port开头吗?很明显,不以port开头,所以那个pattern不匹配,action不执行。但执行了后面的a=$1

    处理第二行的时候,以port开头,打印出来a和本行$2,再处理就是个循环过程。

    详细步骤:

    由于第一行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=ggg

    由于第二行有匹配以port开头的,所以print a" "$2行执行,由于a=ggg,所以输出 ggg 192.168.5.41:3260

    由于第三行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=werew

    由于第四行有匹配以port开头的,所以print a" "$2行执行,由于a=werew,所以输出 werew 192.168.5.43:3260

    由此得到结果:

    ggg 192.168.5.41:3260
    werew 192.168.5.43:3260

  • 相关阅读:
    python实训day8
    python实训day7
    python实训day6
    python实训day5
    python实训day4
    python实训day3
    python实训day2
    python实训day1
    MyBatis入门-insert标签介绍及使用
    Shell入门-Shell脚本开发规范
  • 原文地址:https://www.cnblogs.com/wangyuebo/p/5914966.html
Copyright © 2020-2023  润新知