zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Linux JDK安装
    Redis集群搭建
    Struts2 中添加 Servlet
    js小技巧:数组去重
    修改Request 中的数据
    JAVA 图形界面开发基础详解
    JAVA 类和对象基础知识详解
    Java 类的继承详解
    C++ 大学课堂知识点总结
    数据库简单练习 建表+select
  • 原文地址:https://www.cnblogs.com/wangyuebo/p/5914966.html
Copyright © 2011-2022 走看看