常用命令_LINUX三剑客之文本处理

首先是源文本test.tcl

@@ cat test.tcl- switch_core_1 HEADBUFMDV32_140P7T35R + FIXED ( 1372600 30000 ) FS;
- switch_core_2 HEADBUFMDV32_140P7T35R + FIXED ( 1451000 30000 ) FS;
- switch_core_3 HEADBUFMDV32_140P7T35R + FIXED ( 1529400 30000 ) FS;
- switch_core_4 HEADBUFMDV32_140P7T35R + FIXED ( 1607800 30000 ) FS;
- switch_core_5 HEADBUFMDV32_140P7T35R + FIXED ( 1686200 30000 ) FS;
- switch_core_6 HEADBUFMDV32_140P7T35R + FIXED ( 1764600 30000 ) FS;
- switch_core_7 HEADBUFMDV32_140P7T35R + FIXED ( 3489400 30000 ) FS;
- switch_core_8 HEADBUFMDV32_140P7T35R + FIXED ( 3567800 30000 ) FS;
- switch_core_9 HEADBUFMDV32_140P7T35R + FIXED ( 3646200 30000 ) FS;
- switch_core_10 HEADBUFMDV32_140P7T35R + FIXED ( 3724600 30000 ) FS;
- switch_core_11 HEADBUFMDV32_140P7T35R + FIXED ( 3803000 30000 ) FS;
- switch_core_12 HEADBUFMDV32_140P7T35R + FIXED ( 3881400 30000 ) FS;
- switch_core_13 HEADBUFMDV32_140P7T35R + FIXED ( 1372600 58000 ) FS;

其次是最终要处理成的目标文本test.tcl2

@@ cat test.tcl2
addInst -inst  switch_core_1     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_2     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_3     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_4     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_5     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_6     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_7     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_8     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_9     -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_10    -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_11    -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_12    -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_13    -cell  HEADBUFMDV32_140P7T35R

步骤1 grep switch.def 中含switch* HEAD*这两列并将结果 > test.tcl2

命令详解:
grep “HEADBUFMDV32_140P7T35R” test.tcl | awk ‘{printf “%-20s%-20s\n”,$2,$3}’ > test.tcl2

#先 grep 再 awk 取出第二列、第三列($2,$3),并格式化输出(printf “%-20s%-20s\n”)
#Linux awk中的print和printf的比较

awk中print与printf的主要差别显示在以下两点:

  1. print在显示多个结果的时候以逗号分隔,结果将这几部分的内容自动使用分隔符进行分隔,且不需要添加换行符\n
  2. printf可以更加灵活的控制某一个字段的输出格式,通过使用诸如%-12s,%3.1f等格式化方法

#格式化输出–%m.n
switch_core_1 H
-表示左对齐,省略则右对齐;
switch_core_1占13字符宽度,右边补7个空格,刚好20字符宽度;
即为%-20s)

@@ grep "HEADBUFMDV32_140P7T35R" test.tcl | awk '{printf "%-20s%-20s\n",$2,$3}' > test.tcl2
@@ cat test.tcl2
switch_core_1       HEADBUFMDV32_140P7T35R
switch_core_2       HEADBUFMDV32_140P7T35R
switch_core_3       HEADBUFMDV32_140P7T35R
switch_core_4       HEADBUFMDV32_140P7T35R
switch_core_5       HEADBUFMDV32_140P7T35R
switch_core_6       HEADBUFMDV32_140P7T35R
switch_core_7       HEADBUFMDV32_140P7T35R
switch_core_8       HEADBUFMDV32_140P7T35R
switch_core_9       HEADBUFMDV32_140P7T35R
switch_core_10      HEADBUFMDV32_140P7T35R
switch_core_11      HEADBUFMDV32_140P7T35R
switch_core_12      HEADBUFMDV32_140P7T35R
switch_core_13      HEADBUFMDV32_140P7T35R

步骤2 添加列操作

方式一 sed替换法实现

(适用于某列列首或列尾字符相同,如在第一列之前加列“addInst -inst”时,第一列列首有相同字符‘switch’;第二列之前加列“-cell”时,第一列列首有相同字符‘HEADBUF*’)

sed -i 表示直接写入

SED 简明教程

@@ sed -i "s#  HEAD#-cell  HEAD#g" test.tcl2
switch_core_1   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_2   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_3   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_4   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_5   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_6   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_7   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_8   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_9   -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_10  -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_11  -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_12  -cell-cell  HEADBUFMDV32_140P7T35R
switch_core_13  -cell-cell  HEADBUFMDV32_140P7T35R@@ sed -i "s#switch#addInst -inst  switch#g" test.tcl2
addInst -inst  switch_core_2   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_2   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_3   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_4   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_5   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_6   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_7   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_8   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_9   -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_10  -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_11  -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_12  -cell  HEADBUFMDV32_140P7T35R
addInst -inst  switch_core_13  -cell  HEADBUFMDV32_140P7T35R

方式二 awk列操作实现

awk作为列操作脚本语言,添加列显然比sed(行操作脚本语言)命令更合适。

linux 文本的行、列操作
AWK 简明教程

@@ grep "HEADBUFMDV32_140P7T35R" test.tcl | awk '{printf "%-18s%s\n",$2,$3}' > test_awk.tcl
@@ cat test_awk.tcl
switch_core_1     HEADBUFMDV32_140P7T35R
switch_core_2     HEADBUFMDV32_140P7T35R
switch_core_3     HEADBUFMDV32_140P7T35R
switch_core_4     HEADBUFMDV32_140P7T35R
switch_core_5     HEADBUFMDV32_140P7T35R
switch_core_6     HEADBUFMDV32_140P7T35R
switch_core_7     HEADBUFMDV32_140P7T35R
switch_core_8     HEADBUFMDV32_140P7T35R
switch_core_9     HEADBUFMDV32_140P7T35R
switch_core_10    HEADBUFMDV32_140P7T35R
switch_core_11    HEADBUFMDV32_140P7T35R
switch_core_12    HEADBUFMDV32_140P7T35R
switch_core_13    HEADBUFMDV32_140P7T35R
metho
@@ awk '{print "addInst -inst",$1,"-cell",$2}' test_awk.tcl  ##在第一列之前加列“addInst -inst”,以及第一列、第二列之间加列“-cell”
addInst -inst switch_core_1 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_2 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_3 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_4 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_5 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_6 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_7 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_8 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_9 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_10 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_11 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_12 -cell HEADBUFMDV32_140P7T35R
addInst -inst switch_core_13 -cell HEADBUFMDV32_140P7T35R@@ awk '{print "addInst -inst",$1,"-cell",$2}' test_awk.tcl > test_awk.tcl2  ##输出结果写入test_awk.tcl2
@@ awk '{printf "%-10s %-10s %-20s %-10s %-20s\n",$1,$2,$3,$4,$5}' test_awk.tcl2 > test_awk.tcl3 ##格式化输出结果并写入到test_awk.tcl3,不能test_awk.tcl2 > test_awk.tcl2
@@ cat test_awk.tcl3
addInst    -inst      switch_core_1        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_2        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_3        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_4        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_5        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_6        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_7        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_8        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_9        -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_10       -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_11       -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_12       -cell      HEADBUFMDV32_140P7T35R
addInst    -inst      switch_core_13       -cell      HEADBUFMDV32_140P7T35R@@ awk '$1=$1 "  -cell "' test_awk.tcl ##在第一列后面加列;此方法适用于列数较多的情况下单独加列
switch_core_1  -cell  HEADBUFMDV32_140P7T35R
switch_core_2  -cell  HEADBUFMDV32_140P7T35R
switch_core_3  -cell  HEADBUFMDV32_140P7T35R
switch_core_4  -cell  HEADBUFMDV32_140P7T35R
switch_core_5  -cell  HEADBUFMDV32_140P7T35R
switch_core_6  -cell  HEADBUFMDV32_140P7T35R
switch_core_7  -cell  HEADBUFMDV32_140P7T35R
switch_core_8  -cell  HEADBUFMDV32_140P7T35R
switch_core_9  -cell  HEADBUFMDV32_140P7T35R
switch_core_10  -cell  HEADBUFMDV32_140P7T35R
switch_core_11  -cell  HEADBUFMDV32_140P7T35R
switch_core_12  -cell  HEADBUFMDV32_140P7T35R
switch_core_13  -cell  HEADBUFMDV32_140P7T35R

常用命令_LINUX三剑客之文本处理(一):分别利用awk和sed命令添加列文本相关推荐

  1. awk -f 分隔符 命令_Linux三剑客之awk

    awk命令用法小记 版本:CentOS7 ▼  ▼  ▼  ▼  ▼   ▼  ▼  ▼  ▼ 作别老东家,省略一些心里话,希望尽快度过这段迷茫期,调整好心态,面对疾风吧~ 话不多说进入正题 使用方法 ...

  2. awk和sed命令详解

    1.awk命令 awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk命令形式: awk [-F| ...

  3. apache启服务命令_linux系统下apache服务的启动、停止、重启命令

    本文章简单的介绍了关于linux下在利用命令来操作apache的基本操作如启动.停止.重启等操作,对入门者不错的选择.本文假设你的apahce安装目录为 usr local apache2,这些方法适 ...

  4. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  5. Linux实战教学笔记12-linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  6. linux教程 sed命令的用法,Linux基础教程之文件三剑客sed命令用法详解

    sed是一种流编辑器,它是文本处理中非常强大的工具,能够完美的配合正则表达式使用,用法简单实用,非常灵活. 工作原理:sed命令处理文本时,把当前处理的行存储在一个临时缓冲区中,称为"模式空 ...

  7. linux三剑客之sed命令精讲

    1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...

  8. sed命令替换指定字符后不固定字符串,文本信息的替换删除

    sed主要用来处理文本内容的修改,文本的提取分割可以使用awk和cut命令,参考本人文章linux常用文本字符分割分析awk和cut命令 sed命令格式: sed [选项] '.../.../...' ...

  9. Linux sed命令高级用法精讲

    <Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...

最新文章

  1. linuxsvn源代码版本库建立
  2. everythingtoolbar.dll”或它的一个依赖项。_ASP.NET Core依赖注入最佳实践、提示和技巧...
  3. 【风控模型】融合模型Boosting构建信用评分卡模型
  4. 收藏:软件开发、软件收藏
  5. Spring装配Bean的过程
  6. ai的预览模式切换_AI字体制作,用AI制作创意阶梯式文字
  7. BBScan:信息泄漏批量扫描脚本
  8. 数据库行转列在现实需求中的用法
  9. 强制浏览器重定向到另一页
  10. php 判断文件类型,php 判断图片文件的真实类型
  11. 《天天数学》连载01:一月一日
  12. DNS IP DOMAIN 详解
  13. C#笔记14 LINQ
  14. vue 萤石云视频监控对接
  15. 计算机考试后勤保障管理制度,计算机在高校后勤管理的应用
  16. 鸿蒙系统主题如何自定义,华为鸿蒙系统细节曝光 支持自定义选项
  17. svn代码量统计工具StatSVN的使用
  18. JDBC - 宋红康 - 核心技术
  19. 批量将不同文件夹目录中的文件统一提取到同一个文件夹中
  20. win10从网络访问计算机没有guest,简单几步解决win10没有权限访问网络资源的问题...

热门文章

  1. 2022年04月03日报告
  2. 浅谈HTA(HTML Application)和病毒
  3. 图解KMP算法,带你彻底吃透KMP
  4. OSCache 缓存重建在 Race Condition 下的 NRE 问题
  5. matlab交叉谱密度图如何分析,Matplotlib交叉谱密度(CSD)
  6. zabbix:关于错误unsupported item key常见错误汇总
  7. 第4节:ZigBee MAC层介绍
  8. 搜索引擎语法+网络空间搜索and在线web工具
  9. 【工具安装】idea-2018.3.5版本下载安装以及破解过程
  10. python爬取电商订单_Python探索之爬取电商售卖信息代码示例