【shell】awk格式对齐文本
源: 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格式对齐文本的更多相关文章
- Shell awk文本处理,shell脚本编写
Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...
- 转 shell awk 使用详解
awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows ...
- [转]shell awk 入门,中级,高级使用
awk很常用,对于我们在shell中分析log和file很有好处,很实用的东西,大家一起分享学习- 作为技术支持工程师,我们最最经常的工作就是要处理文本文件,不管是什么数据库最后都可以导成文本,我们就 ...
- 使用awk格式化输出文本
注意:本文并不是一篇awk入门文章,而是偏重实例讲解 awk借鉴了c语法,因此awk在许多地方还保留有c语言的痕迹,比如printf语句:for,if的语法结构等 介绍 最简单地说,AWK 是一种用于 ...
- Linux Shell 自动化之让文本飞
Linux Shell 自动化之让文本飞 一.前言: 作者之前在一家 IDC 从事运维兼职工作,后来因某些原因辞职开始 Python 爬虫数据分析.因为这些经历以及后续时间积累下的经验,发现好像自 ...
- [19/06/06-星期四] HTML基础_文本标签、列表(有序、无序、定义)、文本格式化(单位、字体、大小写、文本修饰、间距、对齐文本)
一.文本标签 em:用来表示一段内容的着重点,语气上的强调.一般显示为斜体 i:是斜体显示,和em显示效果一样.h5规定不需要着重的内容而是单纯加粗或斜体可以用i或b.用的不多 strong:用来表示 ...
- shell awk
#!/bin/bash # ;i<=;i++)); # do # c1=`shuf -i - -n ` #生成随机数 # c2=`shuf -i - -n ` # c3=`shuf -i - - ...
- python string 对齐文本的几个方法
用rjust().ljust()和center()方法对齐文本
- POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读 ...
随机推荐
- epoll 性能分析(解决占用CPU 过高问题)2
针对服务器框架Engine,在工作线程中发现该线程占用CPU过高,分析之后发现问题出在死循环那里 void cServerBase::OnProcess() { printf("cServe ...
- LeetCode.965-单一二叉树(Univalued Binary Tree)
这是悦乐书的第366次更新,第394篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第228题(顺位题号是965).如果树中的每个节点具有相同的值,则二叉树是单一的.当且仅 ...
- Pytorch实现Top1准确率和Top5准确率
之前一直不清楚Top1和Top5是什么,其实搞清楚了很简单,就是两种衡量指标,其中,Top1就是普通的Accuracy,Top5比Top1衡量标准更“严格”, 具体来讲,比如一共需要分10类,每次分类 ...
- Win10删除右键菜单快捷键方法
打开注册表,找到HKEY_CLASSES_ROOT\Directory\Background路径,删除对应的快捷方式即可
- nodejs版本控制:nvm use命令失效
Downloading npm version ... Download failed. Rolling Back. Rollback failed. remove C:\Users\Administ ...
- Linux 下文件句柄数的查询学习
1. 查看 所有进程的 打开的句柄数 lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more 效果为: 2. 查看某一个进程内的 文件信息 lsof ...
- Laravel 程序优化
转载: Laravel 程序优化 说明 作为优秀的开发者,在日常编码中,应积极培养书写高执行效率代码的意识.不过项目运行效率是一个系统性工程,不应该只停留在代码层面上,有时更应该考虑整个项目架构,包括 ...
- Python 入门之 内置模块 -- collections模块
Python 入门之 内置模块 -- collections模块 1.collections -- 基于Python自带的数据类型之上额外增加的几个数据类型 from collections 在内 ...
- ReactNative: Android与iOS平台兼容处理
方法一: 创建不同的文件扩展名:*.android.js*.io.js 方法二: import { Platform } from 'react-native'; if (Platform.OS == ...
- import cycle not allowed in test
写个 sdk 的测试时报错 import cycle not allowed in test 后发现因为测试文件内多写了导入同包路径. 同 package 下的 xxx_test.go 内不需要额外 ...