我有一个简短的问题想问你们。在浏览了文档和这里的网站后,我想知道是否有可能阻止 grep 在同一行输出每个匹配项。
在我的例子中,我需要采用等格式的字符串\xeb\x1a\x5e\x31\xc0\x88\x46\x07...
。我用它grep -oP "x\K(\S\S)")
来获取每个十六进制数字。
输出是正确的,但是每个匹配项都在自己的行上。这是一个问题,因为我需要将此输出输入到另一个程序中。那么,有没有办法将每个匹配项连续放置而不使用任何类型的填充?
答案1
您可以将输出传输到tr
,例如
grep -oP "x\K(\S\S)") | tr -d '\n'
这需要额外的进程,也就是说,它会使你的程序变慢。如果这是一个问题,你可以使用sed
或awk
。
答案2
如果您将其输入以sed
删除所有换行符(\n
),它会起作用吗?
echo \xeb\x1a\x5e\x31\xc0\x88\x46\x07 | grep -oP "x\K(\S\S)" | sed ':a;N;$!ba;s/\n//g'