将sed行分隔符更改为NUL以充当"xargs -0"预过滤器?

bst*_*rre 13 sed xargs

我正在运行这样的命令行:

filename_listing_command | xargs -0 action_command
Run Code Online (Sandbox Code Playgroud)

在哪里filename_listing_command使用空字节来分隔文件 - 这就是xargs -0想要消费的东西.

问题是我想过滤掉一些文件.像这样的东西:

filename_listing_command | sed -e '/\.py/!d' | xargs ac
Run Code Online (Sandbox Code Playgroud)

但我需要用xargs -0.

如何将sed想要的行分隔符从换行符更改为NUL?

Idc*_*cmp 17

如果你正在寻找答案并使用GNU sed 4.2.2或更高版本,它现在有一个-z选项,它可以满足OP的要求.


Pau*_*ce. 6

通过管道输送grep

filename_listing_command | grep -vzZ '\.py$' | filename_listing_command
Run Code Online (Sandbox Code Playgroud)

所述-z输入接受空终止子和所述-Z输出产生空终止子和所述-v反转的匹配(排除)。

编辑:

如果您喜欢使用,请尝试以下方法sed

filename_listing_command | sed 's/[^\x0]*\.py\x0//g' | filename_listing_command
Run Code Online (Sandbox Code Playgroud)