awk命令提取某行的最后一个数值

我不是学计算机的,想用awk命令提取数值,不是太明白。比如这样一行:energywithoutentropy=-3.74486268energy(sigma->0)=-3... 我不是学计算机的,想用awk命令提取数值,不是太明白。比如这样一行:
energy without entropy = -3.74486268 energy(sigma->0) = -3.74530659
我要用awk命令提取最后一个数(-3.74530659),应该怎么做呢?

之前对于:entropy T*S EENTRO = -0.00066587,
别人的代码是这样的:
TS=`grep "EENTRO" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5 }'`
echo $TS >>comment
请问我那个应该怎么修改呢?谢谢了
展开
 我来答
xshrim
推荐于2018-04-05 · TA获得超过2157个赞
知道小有建树答主
回答量:688
采纳率:66%
帮助的人:527万
展开全部
TS=`grep "energy" OUTCAR | tail -1 | awk '{printf "%12.8f \n", $8 }'`
echo $TS >>comment

这样就可以了。
反引号`内的命令被赋值给变量TS。echo $TS输出变量,用>>将输出重定向到comment文件中。
反引号内的命令一共是3个,通过2次管道将输出进行传递。
grep "energy" OUTCAR表示搜索OUTCAR文件中带有energy单词的行
| 表示将上一个命令的输出结果作为下一个命令的输入
tail -1表示取最后一行,这个根据你的OUTCAR文件的内容而定,如果只有一行有单词energy,就不需要这个命令,如果有多行包含energy,就根据需要取相应行。
awk '{printf "%12.8f \n", $8 }' 表示将行的第8列打印出来,awk命令默认列分隔符就是空格,所以你这一行所需要取的数值在第8列上。打印格式为精确到小数点后8位(数值总位数为12位),根据你需要的精度取舍。如果要取完整的数值,也可以直接将这部分改为awk '{printf, $8 }'。
就是这样了。
青山绿水湾
2020-07-12
知道答主
回答量:40
采纳率:0%
帮助的人:8483
展开全部
你可以直接用awk这样做:
awk 'BEGIN{FS="="}{print $2}' xxx.txt
因为我看你最后一个字段前有一个等号,所以用FS="="作为指定字段分隔符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yexicheng
2014-12-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:8857
采纳率:69%
帮助的人:7107万
展开全部
假设文件是OUTCAR
TS=`grep "energy" OUTCAR |tail -1 |awk '{print $5}'`
echo $TS >> comment
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式