我有一个包含以下行的文本文件:
[...]
GFX Clocks and Power:
800 MHz (MCLK)
26 MHz (SCLK)
[...]
我想提取800 MHz
它的一部分(值不是恒定的),所以我想删除\t
并(MCLK)
使用sed
.
这是我现在的命令:
$ cat ~/test.txt | grep "(MCLK)" | xargs -0 sed -i -e $'s/\t//g' -e 's/\(MCLK\)//g'
运行时,它返回:
sed: can't read 800 MHz (MCLK)
: No such file or directory
这似乎不是换行错误,应该解决有关\t
成为非标准字符的问题sed
(参见简单的 sed 替换选项卡神秘地失败)。
可能是什么问题?
如果您有
pgrep
:也许类似的东西可以帮助:
尝试这个,
/(MCLK)/
将搜索关键字。s/(MCLK)//g
将删除(MCLK)
.s/\t//
将删除标签。您可以使用
-i
选项进行内联编辑。对于您编辑的问题,
xargs
接受其输入并将其转换为给定命令的参数。grep
返回您感兴趣的行xargs
并将此行作为参数添加到sed
需要文件名的命令中。你根本不需要xargs
。您可以告诉
sed
只对匹配模式的行执行操作:尝试使用以下命令,它也工作正常
命令
输出