当前位置: 首页 > news >正文

awk处理xml文件封装集合变量和调用

对于Hadoop配置本地存储路径:

<property><name>dfs.datanode.data.dir</name><value>file:///dfs/data</value></property>

<property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:///mnt/datadir1/data,/mnt/datadir2/data,/mnt/datadir3/data</value> 
</property> 

  • 可以严格按照XML换行和缩进格式配置,也可以配置到一行中;
  • 可以带file://前缀也可以不带;

注:在 Hadoop 的配置中,dfs.datanode.data.dir 是用来指定本地文件系统上的目录路径。默认情况下,Hadoop 会将这些路径解释为本地文件系统上的路径,因此不需要显式地添加 file:/// 前缀。

awk是行处理工具,那么如何处理这种结构化的数据块呢?并且要兼顾单行和多行配置。

其实也不难。。

sudo cat "$hadoop_conf/hdfs-site.xml" | awk '/<name>dfs.datanode.data.dir<\/name>/ {if($0!~/<value>/){getline}     #如果<name>节点上没有<value>子节点,读取下一行sub(/.*<value>/, "")           #剔除<value>及之前的空行sub(/<\/value>.*/, "")         #剔除</value>及之后的空行sub(/file:\/\//, "")           #剔除file://前缀gsub(/,/, "\n")                #将以逗号分割的多个目录换行打印print
}'

效果如下:

 

如果集合不直接打印,而是要封装成集合,以待后续处理呢?

sudo cat "$hadoop_conf/hdfs-site.xml" | awk '/<name>dfs.datanode.data.dir<\/name>/ {if($0!~/<value>/){getline}sub(/.*<value>/, "")sub(/<\/value>.*/, "") sub(/file:\/\//, "") split($0, paths, /,/)for (i in paths){result[count++] = paths[i]}
}END {# 打印数组内容for (i = 0; i < length(result); i++) {print result[i]}}'

这里为啥要将paths集合中的数据倒腾到result数组中,知道为啥吗?

效果如下:

http://www.xdnf.cn/news/897841.html

相关文章:

  • Git仓库的创建
  • 机器学习笔记【Week7】
  • window安装docker
  • 无需域名,直接加密IP的SSL方案
  • Docker容器化技术概述与实践
  • 【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
  • python闭包与装饰器
  • Chrome安装代理插件ZeroOmega(保姆级别)
  • 浏览器工作原理01 [#]Chrome架构:仅仅打开了1个页面,为什么有4个进程
  • .NET AOT 详解
  • Spring AI 入门:Java 开发者的生成式 AI 实践之路
  • 保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
  • C#报错 iText.Kernel.Exceptions.PdfException: ‘Unknown PdfException
  • uniapp+vue2解构赋值和直接赋值的优缺点
  • 12.vite,webpack构建工具
  • 云原生玩法三问:构建自定义开发环境
  • 父组件prop传向子组件的值,被子组件直接v-model绑定 功能不生效
  • win10安装WSL2、Ubuntu24.04
  • 华为云学堂-云原生开发者认证课程列表
  • uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
  • 惊艳呈现:探索数据可视化的艺术与科学
  • 详细介绍uni-app中Composition API和Options API的使用方法
  • 微信小程序- 用canvas生成排行榜
  • iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
  • 大白话解释一下 MIC Bias
  • React - 组件通信
  • CDN:静态资源如何加速?
  • 采用轮询的方式实现在线人数
  • SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
  • Kafka 入门指南与一键部署