源:

218.104.69.100                    218.104.69.100                    安徽合肥
218.104.69.99 218.104.69.99 安徽合肥
61.190.72.38 61.190.72.38 安徽合肥
61.190.75.3 61.190.75.3 安徽合肥
61.190.75.6 61.10.75.6 安徽合肥
166.111.172.198 166.111.172.198 北京
166.111.172.199 166.111.173.25 北京
1.8.3.3 3.3.3.3 江苏南京
210.28.128.0 210.28.129.255 江苏南京
23.23.23.23 33.33.33.33 江苏南京
3.3.3.3 2.2.2.33 江苏南京
3.3.3.3 2.2.22.33 江苏南京
3.3.3.3 2.33.22.33 江苏南京
3.3.3.3 22.33.22.33 江苏南京 我想把它变成: 218.104.69.100 :218.104.69.100 :安徽合肥
218.104.69.99 :218.104.69.99 :安徽合肥
61.190.72.38 :61.190.72.38 :安徽合肥
61.190.75.3 :61.190.75.3 :安徽合肥
61.190.75.6 :61.10.75.6 :安徽合肥
166.111.172.198:166.111.172.198:北京
166.111.172.199:166.111.173.25 :北京
1.8.3.3 :3.3.3.3 :江苏南京
210.28.128.0 :210.28.129.255 :江苏南京
23.23.23.23 :33.33.33.33 :江苏南京
3.3.3.3 :2.2.2.33 :江苏南京
3.3.3.3 :2.2.22.33 :江苏南京
3.3.3.3 :2.33.22.33 :江苏南京
3.3.3.3 :22.33.22.33 :江苏南京 说明:
1、不要管中文汉字的第三列有多少个字符串(可能很多个)
2、只管前两列上面字符串最小的3.3.3.3 最大的166.111.172.198 (只是举例,明白意思就行了)
3、前两列最大的字符串后面紧跟冒号,其余达不到最大字符串数量的加空格填充

我的想法是,先遍历第一列和第二列,取出两列各自字符串的最大长度,然后格式化最大长度的宽度即可。

[root]$ cat replacespace  | awk -v i= 'BEGIG{maxlen=0;maxlen2=0;i=0}{if(maxlen<length($1)){maxlen=length($1)};if(maxlen2<length($2)){maxlen2=length($2)};arr1[i]=$1;arr2[i]=$2;arr3[i]=$3;i++} END{for(j=0;j<i;j++) {printf("%-"maxlen"s%s%-"maxlen2"s%s%s\n",arr1[j],":",arr2[j],":",arr3[j])} }'
218.104.69.100 :218.104.69.100 :安徽合肥
218.104.69.99 :218.104.69.99 :安徽合肥
61.190.72.38 :61.190.72.38 :安徽合肥
61.190.75.3 :61.190.75.3 :安徽合肥
61.190.75.6 :61.10.75.6 :安徽合肥
166.111.172.198:166.111.172.198:北京
166.111.172.199:166.111.173.25 :北京
1.8.3.3 :3.3.3.3 :江苏南京
210.28.128.0 :210.28.129.255 :江苏南京
23.23.23.23 :33.33.33.33 :江苏南京
3.3.3.3 :2.2.2.33 :江苏南京
3.3.3.3 :2.2.22.33 :江苏南京
3.3.3.3 :2.33.22.33 :江苏南京
3.3.3.3 :22.33.22.33 :江苏南京

【shell】awk格式对齐文本的更多相关文章

  1. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  2. 转 shell awk 使用详解

    awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows ...

  3. [转]shell awk 入门,中级,高级使用

    awk很常用,对于我们在shell中分析log和file很有好处,很实用的东西,大家一起分享学习- 作为技术支持工程师,我们最最经常的工作就是要处理文本文件,不管是什么数据库最后都可以导成文本,我们就 ...

  4. 使用awk格式化输出文本

    注意:本文并不是一篇awk入门文章,而是偏重实例讲解 awk借鉴了c语法,因此awk在许多地方还保留有c语言的痕迹,比如printf语句:for,if的语法结构等 介绍 最简单地说,AWK 是一种用于 ...

  5. Linux Shell 自动化之让文本飞

    Linux Shell 自动化之让文本飞 一.前言: ​ 作者之前在一家 IDC 从事运维兼职工作,后来因某些原因辞职开始 Python 爬虫数据分析.因为这些经历以及后续时间积累下的经验,发现好像自 ...

  6. [19/06/06-星期四] HTML基础_文本标签、列表(有序、无序、定义)、文本格式化(单位、字体、大小写、文本修饰、间距、对齐文本)

    一.文本标签 em:用来表示一段内容的着重点,语气上的强调.一般显示为斜体 i:是斜体显示,和em显示效果一样.h5规定不需要着重的内容而是单纯加粗或斜体可以用i或b.用的不多 strong:用来表示 ...

  7. shell awk

    #!/bin/bash # ;i<=;i++)); # do # c1=`shuf -i - -n ` #生成随机数 # c2=`shuf -i - -n ` # c3=`shuf -i - - ...

  8. python string 对齐文本的几个方法

    用rjust().ljust()和center()方法对齐文本

  9. POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】

    实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读 ...

随机推荐

  1. GO——beego安装及新建项目(一)

    beego简介 Beego是一个快速开发Go应用的http框架,可用于快速开发Api.web及后端服务等各种应用,是一个RESTful框架. beego的架构 Beego由八个独立模块构建,是一个高度 ...

  2. Angular5 reactive Forms Listening for Changes 监听表单变化

    在html 中定义了 FromGroup,怎么来监听用户输入值的变化呢? 可以使用valueChanges 来订阅变化. this.myForm.valueChanges.subscribe(val ...

  3. python 三元运算、列表推倒式、字典推倒式、生成器生成式

    1.三元运算 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推倒式 #1.示例 egg_ ...

  4. Sqlserver 2012附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    环境: Win10系统 SQLSERver 2012 情况: 使用混合登陆方式,sa账户密码正确登陆后,附加.mdf文件出现此错误. 尝试解决方法一:使用管理员运行SQLSERver2012,sa账户 ...

  5. Spring JdbcTemplate 和 NamedParameterJdbcTemplate 使用

    1.简单介绍 DAO层 的一般使用常见的是MyBatis 和 Hibernate,但是Hibernate是重量级的,而且学习成本较高,Mybatis 需要编写大量配置文件及接口文件,对于简单的项目应用 ...

  6. javaSE温习一&二

    这是一个简单的笔记 涉及到常量.变量:流程控制语句.数组:类与对象.封装.构造方法:Scanner类.Random类.Arraylist类: 1.pubic class  static void 2. ...

  7. python基础之迭代器生成装饰器

    基本概念 1.容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元 ...

  8. 编号001:deque用法暂时总结

    #deque的用法总结 In [1]: """ 所在地址:from collections import deque 现在知道的情况总结: 1.deque的用法与list ...

  9. C#获取主机信息

    获取主机信息 最近需要做一个配合集控系统收集各个终端设备的一些信息,大致需要收集终端设备的硬件信息,CPU.内存以及硬盘使用率等信息.网上查看了一番,使用WMI来获取这些信息是最方便的.实现代码如下: ...

  10. Jquery复习(六)之remove()易忘点和trigger()

    过滤被删除的元素 jQuery remove() 方法也可接受一个参数,允许您对被删元素进行过滤. 该参数可以是任何 jQuery 选择器的语法. 下面的例子删除 class="italic ...