jag*_*og5 3 bash null pipe delimiter
我正在尝试删除输入流中直到并包括第一个空字符的所有字符。
我已经尝试过这个,其中:
$ echo $'ab012\nab012' | tr '0' '\0' | cut -f2- -d '' | od -An -t uC
49 50 10 49 50 10
Run Code Online (Sandbox Code Playgroud)
od 的输出为:1, 2, \n, 1, 2, \n。
该解决方案是不正确的,因为 cut 将此操作应用于每一行,而不是仅从头开始。正确的输出应该是:1, 2, \n, a, b, \0, 1, 2, \n。
我该如何实现这一目标?
如果你有 GNU sed:
echo $'ab012\nab012' | tr '0' '\0' | sed -z '1d' | od -tx1
Run Code Online (Sandbox Code Playgroud)
-z选项sed是 GNU 扩展。
或者,一种纯粹的bash方式,如评论中所述:
echo $'ab012\nab012' | tr '0' '\0' | { read -r -d ''; cat; } | od -tx1
Run Code Online (Sandbox Code Playgroud)
当与选项一起使用时-d '',bash 内置命令read将在读取 NUL 字符时终止一行。