用awk/sed去掉xml中的注释

1. awk ‘BEGIN{RS="<!--|-->"}NR%2‘ urfile

2. sed ‘/<!--/{:a;/-->/!{N;ba}};/<!--/d‘

RS (Record Separator), 记录分隔符
RS="<!--|-->" 设置记录分隔符为<!--或者-->,两者皆可用于分隔记录。
start<!--abcdefg-->123
这样分割出来就是三条记录start , abcdefg 和 123.
  
NR (Number of Records), 记录数,awk是以行(记录)为单位处理文本的,每读入一行NR就增1
NR%2 ,我换一种写法你就明白了:NR%2 != 0 {print}
就是说,只打印奇数行。

追问

额,首先谢谢您的回答。NR%2是打印奇数行,这个奇数行是指整个文档的奇数行吗?
比如
(1)例子1:start<!--abcdefg-->123 
期望结果:start 123 。实际结果:start 123。
(2)例子2:
testLine1
start<!--abcdefg-->123
实际结果:testLine1 start 和123。
疑问就出来了,这个奇数行该怎么理解呢?

追答

RS="<!--|-->" 设置记录分隔符为<!--或者-->,两者皆可用于分隔记录。
奇数行,这里的“行”指的是通过awk的记录分隔符分割出来的记录。awk中的一条记录就是一行。
例子2中,分割出来就是:
testLine1\nstart  (这是一条记录,换行用\n表示)
abcdefg
123
打印的时候,\n自动还原为换行符。
时间: 2024-10-12 19:35:54

用awk/sed去掉xml中的注释的相关文章

去掉代码中的注释和空白行

import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.function.Predicate; import java.util.stream.Stream; /** * 从文本中读取脚本代码,去掉注释("#") 和空白行 * * @author Felix *

Linux Shell脚本去掉几类常见文件中的注释

Linux操作系统中去掉各类文件中的注释这个功能比较常用,通常用在查看一个较长的文件,又不想看注释的情况.通常这些文件包括C语言编写的*.c.*.h文件.cpp文件.*.xml文件.*.sh shell脚本文件.*.ini *.conf配置文件.*.php *.py *.pl等编程语言编写的文件以及无扩展名的一些可执行文件等. 实现这个功能并不复杂,通常注释风格就那么几种,在编写脚本过程中只需要编写出合适的正则表达式以及运用适当的文本处理工具(grep.sed等)即可. 针对几种常见的注释风格编

用Python提取HTML源码中的注释与去掉注释

遇到一个编程问题,你必须首先想到的是要简化它,简化成一个最简单的问题后,写最简单的代码来解决它,同时只付出最简单的测试代价. 简单HTML源码: 1<!--The loneliest number-->                         <a>2<!--Can be as bad as one--><b>3 提取上述代码中的注释: from bs4 import BeautifulSoup, Comment soup = BeautifulSo

怎么在android的XML文件中添加注释

android的XML文件注释一般采用 <!--注释内容 -->的方式进行 在XML中,形如    <Button           />      的表示方式,其中"/>"的含义表示这个XML中没有内文,他是一个最小组成单元,也就是说他的中间不能包含其他任何< >的代码,所以在<Button />中间注释会出现错误 注意看到,在注释的前面有一个">"符号,这就是我们能够在他中间进行注释的原因,他的完整结

eclipse下java中注释字体太小和xml中中文字体太小问题解决方法

我们在win7下进行android应用开发,需要搭建相应的开发环境.现在普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下,java中的注释和xml中的中文字体变得特别小,无法看的清楚.解决方法如下: 1.Java中字体变大方法: 打开eclipse,Window-->Preferences,如下图打开: 双击第二个红色框,如下图: 将字体改成五号即可. 2.xml中中文字体太小解决方法: 打开eclipse,Window-->Preferences--&g

java web开发中的奇葩事web.xml中context-param中的注释

同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步删除同事提交的代码,进行还原. 奇葩事情出现了! <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/context_entry.xml

【文本处理】awk、sed使用 - 更新中

一.正则介绍 基本元字符(基本正则表达式): 字符匹配: .  匹配换行符之外的任意一个字符 [] 字符组元字符,元字符在[]内,会失去特殊意义不用转义 [^] 除开字符组中的字符 次数匹配: *  匹配前面字符零次或多次 \?  零次或一次 \{m,n\}  至少m次,至多n次 \{m,\}   m次 锚定符: \<,\b  词首锚定 \>,\b  词尾锚定 ^    行的开头 $    行的结尾 ^$   空行 .*   任意字符串 分组: \(\)     \1,\2   前向引用,\1

AWK&amp;SED

目录 命令实例 1.显示两个目录中不同的文件 2.打补丁 3.找出两个文件相同的记录 4.找不同的记录 5.对文件的某一列进行统计 6.将c文件中第一列放到到d文件中的第三列 7.删除重复行,顺序不变 uniq 选项 参数 实例 sort命令 语法 选项 参数 实例 du find awk awk命令格式和选项 awk模式和操作 模式 操作 awk脚本基本结构 awk的工作原理 awk内置变量(预定义变量) 重点 将外部变量值传递给awk awk运算与判断 算术运算符 赋值运算符 逻辑运算符 正

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

文章大纲 在xml中声明bean和注入bean 在xml中声明bean和自动注入bean 自动扫描bean和自动注入bean 对自动扫描bean增加约束条件 首次接触spring请参考 Spring 3.0 学习-环境搭建和三种形式访问 1.典型的Spring XML 配置文件表头 <?xml version="1.0" encoding="UTF-8"?><!-- 一般化的Spring XML 配置 --> <beans xmlns=