我有一个NUL定界输出,来自以下命令:

some commands | grep -i -c -w -Z 'some regex'

输出包含以下格式的记录:

[file name]\0[pattern count]\0

我想使用文本处理工具(例如sed / awk)将记录更改为以下格式:

[file name]:[pattern count]\0

但是,似乎sed / awk通常只处理以"换行符"分隔的记录。 我想知道如何使用sed / awk实现我的目的,或者如果sed / awk无法处理这种情况,我应该使用其他Linux工具。

感谢您的任何建议。

劳伦斯

那你怎么看这个文件?用十六进制编辑器?它怎么知道在哪里打破界限?为什么不将 0转换为 n并拥有一个可以使用标准unix范例进行处理的易于阅读的文件呢?否则,在每一步中,您都将与unix的基本定律"每个记录都按自己的路线行事"! ;-)生命太短了,还有很多有趣的问题需要解决。您能否获得使用 n或...颤抖 r n的原始输出源?祝好运。

输出将不显示,而是通过管道传递到另一个命令中。我使用NUL作为分隔符,因为Linux文件名中可以??包含"换行符"。我同意,对于我们来说,为我们的问题找出所有解决方案的时间太短了。

但是文件名是与管道中包含的数据不同的数据。 2仅在将数据写入文件中且名称可能带有 n的情况下碰面。祝好运。

我终于弄清楚了grep -c -Z只会在[pattern count]之后放置一个"换行"字符。我现在选择不使用grep -Z选项,但是TejasPs的答案对于以后使用awk解析NUL分隔文件仍然很有帮助。谢谢大家

从版本4.2.2开始,GNU sed具有-z或--null-data选项来执行此操作。例如:

sed -z 's/old/new' null_separated_infile

默认情况下,记录分隔符是换行符,将一条记录定义为一行文本。您可以通过更改内置变量RS使用其他字符。 RS的值是一个字符串,说明如何分隔记录;默认值为" n",该字符串仅包含换行符。

awk 'BEGIN { RS ="/" } ; { print $0 }' BBS-list

我已经测试过命令awk BEGIN { RS ="\0" } ; { print $0 }可以用NUL字符分隔记录。 但是GNU Awk用户指南说RS =" 0"是不可移植的。 无论如何,在我的情况下,我可以从此命令开始尝试将[pattern count]之前的NUL字符更改为":"字符。

是的,gawk可以做到,将记录分隔符设置为\0。例如命令

gawk 'BEGIN { RS="\0"; FS="=" } $1=="LD_PRELOAD" { print $2 }'

将打印出LD_PRELOAD变量的值:

/usr/lib/x86_64-linux-gnu/libjemalloc.so.1

/proc/$PID/environ文件是由NUL分隔的环境变量列表。我以它为例,因为在Linux系统上尝试很容易。

BEGIN部分将记录分隔符设置为\0,字段分隔符设置为=,因为我也想基于=之前的部分提取=之后的部分。

如果第一个字段具有我感兴趣的键,则$1=="LD_PRELOAD"将运行该块。

print $2块在=之后打印出字符串。

但是mawk无法解析用NUL分隔的输入文件。这记录在man mawk中:

BUGS

mawk cannot handle ascii NUL \0 in the source or data files.

mawk将停止读取第一个\0字符之后的输入。

您还可以使用xargs来处理NUL分隔的输入,这有点不直观,就像这样:

xargs -0 -n1

xargs使用echo作为默认命令。

-0将输入设置为NUL分隔。

-n1将echo的max参数设置为1,这样输出将由换行符分隔。

正如Graeme的答案所示,sed也可以做到这一点。

使用sed删除null字符-

sed 's/\x0/ /g' infile > outfile

或通过做文件内替换(这将备份原始文件并用替换覆盖原始文件)。

sed -i.bak 's/\x0/ /g' infile

使用tr:

tr -d"\000" < infile > outfile

或tr"\000""

" < infile > output:-?)

@shellter你是对的。 我不确定OP是否要用换行符替换它们或删除它们... :)

但是我的目的是仅替换[pattern count]之前的NUL字符,而不是替换所有NUL字符。

@ user1129812在这种情况下,您可以使用sed命令并从中删除g选项。 g选项用于进行全局替换。 删除后,只会在每行的第一次出现时进行更改。

sed 分隔符打印_sed或awk可以使用NUL字符作为记录分隔符吗?相关推荐

  1. sed 分隔符打印_字符截取:cut,格式化输出:printf,字符截取:awk,文件或命令输出编辑:sed...

    cut 选项 文件名 -f 列号 提取第几列 -d 分隔符 指定分隔符把行分成多列 不能以空格为分隔符. [root@localhost ~]# cattestfile no. name sex sc ...

  2. sed 分隔符打印_关于正则表达式:使用sed更改CSV分隔符

    我有一个CSV文件,看起来像: 1,3,"3,5",4,"5,5" 现在,我想将所有","(而不是引号)更改为";" 加 ...

  3. awk -f 分隔符 命令_千面 awk

    awk 命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列.打印简单文本.筛选内容--甚至做一些数学计算. -- Sandra Henry-stocker(作者)awk 命令不仅提供了简单的输入 ...

  4. Linux 替换字符 换行,sed将换行替换成空格或者其他字符linux操作系统 -电脑资料...

    昨天有一同学问我如何利用shell的sed将换行替换成空格或者其他字符呢,下面小编来给大家介绍一下常用替换方法吧, sed流编辑器是shell中处理文本内容的一大利器.sed命令从文本流中读取一行文本 ...

  5. Java黑皮书课后题第6章:6.12(显示字符)使用下面的方法头,编写一个打印字符的方法。编写一个测试程序、打印从‘1‘到‘Z‘的字符,每行打印10个,字符之间使用一个空格字符隔开

    6.12(显示字符)使用下面的方法头,编写一个打印字符的方法.编写一个测试程序.打印从'1'到'Z'的字符,每行打印10个,字符之间使用一个空格字符隔开 题目 题目描述 破题 补充:从生成随机字符窥探 ...

  6. oracle字符nul怎么输入,oracle - 如何摆脱Oracle数据库中的NUL字符? - 堆栈内存溢出...

    就个人而言,我会使用CHR()来识别零值. nul是ASCII 0, CHR()将返回您传入的数字的字符表示. SQL> with the_data as ( 2 select 'a' || c ...

  7. java nul 字符_Java字符串替换和NUL(NULL,ASCII 0)字符?

    用空字符替换字符中的字符甚至在Java中工作吗?我知道'\ 0'会终止一个c字符串. 这取决于你如何定义工作.是否用'\0'替换了所有出现的目标字符?绝对! String s = "food ...

  8. html保存时出现nul,c# – 有时保存的文件只包含NUL字符

    我们的 Windows 8.1应用程序(WinRT)中存在一个问题,即有时我们保存的文件已损坏.这些文件的文件大小正确,但该文件只包含NUL字符.该文件应包含一个序列化对象作为XML. 为了找到问题, ...

  9. Java 程序处理 去除文件中的NUL字符

    小编上次文件丢失电脑硬盘分区删了格式化了文件如何恢复,硬盘数据恢复后,找回的文件最后一行有NUL字符,想着怎么去掉,因为文件很多,就写了个java处理程序,处理掉NUL部分主要参考java删除文本文件 ...

最新文章

  1. java activiti5_工作流Activiti5.13学习笔记(一)
  2. solidworks工具集_【第1975期】SolidWorks!从3D扫描到3D打印的一站式设计工具
  3. 深入理解JVM(5) : Java垃圾收集器
  4. python简单可视化聊天界面_如何用Python制作可视化输入界面
  5. 理解js中的原型链,prototype与__proto__的关系
  6. quartus状态机生成_生成器作为(快速失败)状态机
  7. ArrayList 一个面试题
  8. 低学历的人就不能创业了吗?
  9. 微软补丁星期二修复120个漏洞,含2个已遭利用的 0day
  10. php 什么是 cookie? 会话 cookie 与持久性 cookie 之间 有何区别?
  11. JAVA中三个点“...”是什么意思
  12. Linux下抓取log的方法
  13. libxml2.7.8 c++ 解析xml文件 中文转换
  14. 愿以三生烟火,换君一世迷离
  15. nmap下载及安装过程。
  16. kettle怎么复制资源库的job_kettle插件更新:定时执行资源库及文件的ktr和kjb作业...
  17. 学习python第十五天,面对对象
  18. 跟着猴博士复试概率论(第二部分)
  19. 冲激函数与冲激函数相乘与冲激函数对冲激函数卷积之间的区别
  20. 高等数学学习笔记——第六十四讲——偏导数

热门文章

  1. 2018年终总结-五味杂陈
  2. cmake:add_definitions
  3. 为什么使用手机微软必应浏览器
  4. Binder对象死亡通知机制
  5. (六)unity自带的着色器源码剖析之——————Unity3D的全局光照和阴影:上篇(全局照明GI和局部照明)
  6. 中国联通让利销售iPhone
  7. 快卸载美图秀秀,它会收集并出售你的个人信息
  8. [转载]谈如何快速了解一个行业
  9. c语言static变量初始化
  10. GB2312字符集对应16进制ANSI、UNICODE、UTF-8编码 (4)