我有一个NUL分隔输出来自以下命令:
some commands | grep -i -c -w -Z 'some regex'
Run Code Online (Sandbox Code Playgroud)
输出包含以下格式的记录:
[file name]\0[pattern count]\0
Run Code Online (Sandbox Code Playgroud)
我想使用文本操作工具(如sed/awk)将记录更改为以下格式:
[file name]:[pattern count]\0
Run Code Online (Sandbox Code Playgroud)
但似乎sed/awk通常只处理由"换行符"字符分隔的记录.我想知道如何使用sed/awk实现我的目的,或者如果sed/awk无法处理这种情况,我应该使用其他Linux工具.
谢谢你的任何建议.
劳伦斯
默认情况下,记录分隔符是换行符,将记录定义为单行文本。您可以通过更改内置变量RS来使用不同的字符。RS的值是一个字符串,表示如何分隔记录;默认值为\n,仅包含换行符的字符串。
awk 'BEGIN { RS = "/" } ; { print $0 }' BBS-list
Run Code Online (Sandbox Code Playgroud)
从版本4.2.2开始,GNU sed提供了-zor --null-data选项来执行此操作。例如:
sed -z 's/old/new' null_separated_infile
Run Code Online (Sandbox Code Playgroud)