前几天同事问我一个问题,说如下的文档中,如何把name后面的字段(红色框中的字段)单独打印出来?

其实这个很简单,先用sed过滤,然后用cut分割显示即可实现,如下:

sed -n '/name/p' a.xml | cut -d '"' -f 2

使用sed命令的name匹配(或者field也可以)行,然后用cut把"作为分割符取第2列即可

或者使用awk也可以实现:

awk -F '"' '$0~"name"{print $2}' a.xml
#或者
awk 'BEGIN{FS="\""}$0~"name"{print $2}' a.xml

上面语句是把界定符放在了外面,使用参数标识

下面语句是把界定符放在了语句里面,因为双引号是特殊字符,所以使用反斜杠转义一下

但我同事说,这个可不止只有一条数据,如果是多条数据,会重复打印字段,部分数据如下:

这时我们需要对语句进行稍微的加工,如果使用sed,则需要如下操作:

sed -n '/name/p' b.xml | cut -d '"' -f 2 | sort |uniq

后面多加了俩个命令sort和uniq,sort是排序,uniq是去重,只有排序了才能去重,否则不生效。这里也可以把sort和uniq直接写成sort -u,当然如果需要反序,可以写成sort -ur

当然使用awk也是可以的,写成如下:

awk 'BEGIN{FS="\""}nameflag[$2]==$2{next}$0~"name"{print $2;nameflag[$2]=$2}' b.xml

我们这里加了一个数列来存储第二个字段,然后来比较第二个字段是否再出现,如果出现就跳过执行后面的行,这样就避免了重复

大家有什么更好的解决办法可以留言!

转载于:https://www.cnblogs.com/watertaro/p/9311449.html

shell之实战应用一(查找xml文档中的关键字段)相关推荐

  1. XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation理解

    java开发项目中,经常用到xml配置文件,比如web.xml.applicationContext.xml.pom.xml等.在这些文件中都有xmlns.xmlns:xsi和xsi:schemaLo ...

  2. Element 对象表示 XML 文档中的元素。

    Element 对象 Element 对象表示 XML 文档中的元素.元素可包含属性.其他元素或文本.如果元素含有文本,则在文本节点中表示该文本. 重要事项:文本永远存储在文本节点中.在 DOM 处理 ...

  3. XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation

    文章转载自:https://yq.aliyun.com/articles/40353 相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头 ...

  4. python合并word表格单元格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...

    同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护.由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大.人工核对整理既费时又费力 ...

  5. Java为xml跟节点添加子节点_如何将xml节点作为第一个子节点插入Java中的另一个xml文档中?...

    小编典典 如果事实证明我只是为您做功课,我会感到非常恼火. package com.akonizo.examples; import java.io.ByteArrayInputStream; imp ...

  6. mysql 将xml插入数据库_从xml文档中读取数据并插入mysql数据库中

    // TODO: Add your control notification handler code here CMarkup xml; xml.Load("色谱案例表.xml" ...

  7. python 搜索pdf文件中的文字_使用python查找pdf文档中搜索字符串位于哪一页

    我终于发现pyPDF可以帮上忙.我把它寄出去,以防它能帮助别人. (1)定位字符串的函数def fnPDF_FindText(xFile, xString): # xfile : the PDF fi ...

  8. idea的springboot项目的xml文档中查询语句有黄色背景

    接下来介绍如何不显示黄色背景的方法: 1.File -- Settings (或者Ctrl + Alt + S 快捷键)打开设置界面: 2.然后找到 Editor -- Inspections : 3 ...

  9. Word控件Spire.Doc 【Table】教程(7): 如何在C#中用表格替换word文档中的文本

    Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库.在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建.编辑.转换和打印 Mic ...

最新文章

  1. mysql 5.7解压缩,Mysql5.7 windows解压缩ZIP版安装
  2. 小工匠聊架构-超高并发秒杀系统设计 04_流量削峰设计
  3. activepython win32com_activepython下载
  4. Spark练习 - 提交作业到集群 - submit job via cluster
  5. DivideMix: Salesforce提出使用半监督学习大幅改进含噪声标签的学习
  6. Django使用本机IP无法访问,使用127.0.0.1能正常访问
  7. 安装注册数据库管理工具
  8. 可可托海将打造研学旅游基地促经济发展
  9. Atitit 项目wechat微信截屏生成vcf通讯录384 个 384个人 42个节拍,平均每个8个人 技术点 im图像裁剪, ocr Tesseract Vcf格式 /wechatTel
  10. SQL注入实战 绕WTS-WAF
  11. 文件夹变exe怎么办
  12. HFSS15 win10安装
  13. Angular开发(三)-关于属性绑定与事件绑定
  14. android 文件预览(读取)
  15. OneDrive登录时出现问题· 请稍后重试。(错误代码: 0x8004de25)
  16. Springboot中cache的使用
  17. 火狐(firefox)调试移动端页面
  18. 织梦CMS仿站概述:快速理清仿站思路
  19. JS计算数组各数据所占百分比
  20. 买加智能销售系统-以科技赋能企业销售

热门文章

  1. 给mysql的root %用户添加grant权限。并给创建的用户赋予权限
  2. 玩转Excel系列-SUMIFS函数使用及实例
  3. 使用光盘作为yum源安装ifconfig等网络命令
  4. Java Web学习计划
  5. Linux bash中I/O重定向及管道
  6. CentOS Linux 新建oracle数据库实例并连接
  7. JQuery图表插件之Flot
  8. java8 新特性 lambda过滤
  9. Apache Ant自动化脚本
  10. Powershell快速入门(二) Shell编程