Linux Bash Shell字符串抽取、按列合并和格式化输出
需求来源:默认的ip link show命令输出会输出系统中已经存在的网卡(包括虚拟网卡)的名称、MAC地址、端口状态等信息,但也夹杂着一些无用的信息,此次的字符串操作就是将这些信息中的网卡名称、MAC地址、端口状态取出来。
涉及到的知识包括:常用的字符串的处理工具awk、sed、cut等的用法,paste按列合并,printf格式化输出等。
例如原输出信息为:
现在要把上图中红色框内的信息全部提取出来,但难点在于ip link show命令的默认输出会将MAC地址打印在下一行,导致普通的awk操作无法按照列提取。
但办法总是有的:
方法1:使用awk,借助if else判断,数字开头的行取所需的列,不是数字开头的行输出所需的列,一起打印出来就会得到所需要的结果。
ip link show | awk '{if($0~/^[0-9]+:/)printf( "%-15s%-15s",$2,$9);else print $2}'
方法2:使用awk或cut,将每一行中所需的列提取出来,再将这些列按照列合并起来(但此种方法繁琐,而且格式化输出不容易,需要最后格式化输出)。
INTERFACE_NAME=`ip link show | grep ^[1-90-9] | cut -d ":" -f 2` MAC_ADDRESS=`ip link show | grep -v ^[1-90-9] | cut -d " " -f 6` STATE=`ip link show | grep ^[1-90-9] | cut -d " " -f 9` temp=`paste <(echo "$INTERFACE_NAME") <(echo "$MAC_ADDRESS")` paste <(echo "$temp") <(echo "$STATE") temp2=`paste <(echo "$temp") <(echo "$STATE")` echo "$temp2" | awk '{printf("%-15s%-20s%-15s\n",$1,$2,$3)}'
方法3:将ip link show命令输出格式化,将MAC地址打印在同一行。
使用ip的-o参数,将输出控制在同一行。参数等同于“-oneline”,意思就是同一行,解释如下图所示,早已经考虑好了,这种设计实在令人唏嘘不已!
“output each record on a single line, replacing line feeds with the ’\′ character. This is convenient when you want to count records with wc(1) or to grep(1) the output.”
--END--
转载于:https://blog.51cto.com/dgd2010/1611783
Linux Bash Shell字符串抽取、按列合并和格式化输出相关推荐
- Linux Bash Shell字符串截取
#!/bin/bash #定义变量赋值时等号两边不能有空格,否则会报命令不存在 # 运行shell脚本两种方式 # 1.作为解释参数 /bin/sh test.sh ; 2.作为可执行文件 chmo ...
- linux bash 字符串 连接,Linux Bash 中字符串操作
Linux Bash 中字符串操作 所谓 "子字符串" 就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 t ...
- linux bash shell之declare
linux bash shell之declare declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式.命令declare是 ...
- linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
linux bash shell之变量替换::=句法.=句法.:-句法.-句法.=?句法.?句法.:+句法.+句法 变量替换和变量默认值设置是紧密相关的,至少从概念出发是如此. 参数扩张是将类似于变量 ...
- linux bash and,linux bash shell中for的用法and示例
关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用 ...
- linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件
linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件 wget --load-cookies /tmp/cookies.txt "https:// ...
- Linux Bash Shell j简单入门
BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 ...
- Linux Bash Shell编程快速入门
BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 ...
- linux 终端 画圆,Linux Bash Shell快速入门
BASH的基本语法 ·最简单的例子-- Hello World! ·关于输入.输出和错误输出 ·BASH中对变量的规定(与C语言的异同) ·BASH中的基本流程控制语法 ·函数的使用 2.1最简单的例 ...
最新文章
- 转:Silverlight样式写法
- 贝叶斯学习及共轭先验
- jQuery / zepto ajax 全局默认设置
- JavaWeb从开发环境搭建,到第一个servlet程序(图文)
- 关于JavaScript中this的指向,你知晓几分?请速来围观!
- 基于51单片机的指纹考勤系统
- 阿里云php探针,X 探针(刘海探针)开源 PHP 探针介绍
- Accessibility辅助功能的使用
- Linux工作目录切换命令
- 【计算广告】边际成本的妙用
- [机器学习导论]——第三课——神经网络Ⅱ
- 借鉴美团文章实现的动态线程池,已开源
- Lua 随机生成字符串
- TDS210示波器的应用
- 【图像】搜索相同,或者相似照片
- .Net自动生成BH
- 被AI潮抛弃的企业?对话微软CTO韦青,如何应对“变革”焦虑
- 微软人工智能-数据分析平台.md
- 使用 ESP32 + HaaS Python 打造智能温湿度UI面板
- 如何删除回收站右键的找回清空的文件选项
热门文章
- tek示波器软件_给示波器以云空间,泰克发布突破性的数据协同软件TekDrive
- 多级队列调度算法可视化界面_多级反馈队列调度算法
- python文件都是脚本吗_脚本语言系列之Python | Python文件IO
- html5模板区别,网页设计和平面设计理念的六大区别
- mysql 城市二级联动_MYSQL二级联动
- c语言 int a 5,在C语言中,有如下的写法:int a = 5; int *pa; pa = (a + 1);
- 在cad如果用计算机,CAD如何使用快速计算器为中的变量区域功能
- es文件浏览器怎么用_ES文件浏览器VIP直装版
- 利用Python进行数据分析--绘图和可视化
- power bi 雷达图_【自助式数据分析平台——WonderBI(豌豆BI)】免费在线试用_软件库...