【发布时间】:2013-08-02 18:33:07
【问题描述】:
我正在尝试从一行中提取“后 24 个字符中的前 12 个”,即 一行:
species,subl,cmp= 1 4 1 s1,torque= 0.41207E-09-0.45586E-13
我需要提取“0.41207E-0”。 (代码我没写,别骂我格式。)
我已经通过以下方式做到了:
var_s=`grep "species,subl,cmp= $3 $4 $5" $tfile |sed -n '$s/.*\(........................\)$/\1/p'|sed -n '$s/\(............\).*$/\1/p'`
但是,有没有更易读的方法来做这件事,而不是计算点?
编辑 感谢你们俩; 所以,我有 sed、awk grep 和 bash。 我将循环运行它,用于 100 个文件。 那么,您能否建议我哪一个最有效?
【问题讨论】:
-
没有进行任何基准测试,但我倾向于认为纯 bash 解决方案应该是最快的,因为它不调用任何外部二进制文件。
-
不要预先优化。只有在速度成为问题时才优化。最好的解决方案是您最了解并感觉最舒适的扩展自己的解决方案。