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

awk命令提取某行的最后一个数值,第1张

TS=`grep "energy" OUTCAR | tail -1 | awk '{printf "%128f \n", $8 }'`

echo $TS >>comment

这样就可以了。

反引号`内的命令被赋值给变量TS。echo $TS输出变量,用>>将输出重定向到comment文件中。

反引号内的命令一共是3个,通过2次管道将输出进行传递。

grep "energy" OUTCAR表示搜索OUTCAR文件中带有energy单词的行

| 表示将上一个命令的输出结果作为下一个命令的输入

tail -1表示取最后一行,这个根据你的OUTCAR文件的内容而定,如果只有一行有单词energy,就不需要这个命令,如果有多行包含energy,就根据需要取相应行。

awk '{printf "%128f \n", $8 }' 表示将行的第8列打印出来,awk命令默认列分隔符就是空格,所以你这一行所需要取的数值在第8列上。打印格式为精确到小数点后8位(数值总位数为12位),根据你需要的精度取舍。如果要取完整的数值,也可以直接将这部分改为awk '{printf, $8 }'。

就是这样了。

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有三个不同的版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是awk的GNU版本。

之所以叫awk是因为其取了三位创始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family Name的首字符。

awk格式:

格式: sed -n '3p' sedtxt

找谁干啥(条件动作)

awk格式

#取出/etc/passwd 第1行的第1列和第3列

awk -F: 'NR==1{print $1$3}' /etc/passwd

awk 选项 '条件{动作}' /etc/passwd

条件: 哪一行,过滤什么内容

动作: print输出与显示 ,计算

awk取行:与sed类似

案例01:取出sedtxt的第2行

[root@oldboy81-golden-lnb /oldboy]# cat sedtxt

101oldgirl,CEO

102zhangya,CTO

103lidao007COO

104yy,CFO

105feixue,CIO

110lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sedtxt

102zhangya,CTO

#awk '行号 等于 2' sedtxt

#NR awk内置变量

Number of Record 记录号(行号)

案例02:取出sedtxt中包含oldboy或lidao的行

[root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|lidao/p' sedtxt

103lidao007COO

110lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|lidao/' sedtxt

103lidao007COO

110lidao,COCO

案例03:取出文件第2行到第5行内容

#awk '行号大于等于2 并且 行号小于等于5' sedtxt

#方法01

awk 'NR>=2 && NR<=5' sedtxt #必会

&& 表示并且

#方法02

sed -n '25p' sedtxt

#方法03 了解

awk 'NR==2NR==5' sedtxt #从行号是2的行开始 到 行号是5的行结束( 了解)

案例04:取出文件第3行到最后一行内容

[root@oldboy81-golden-lnb /oldboy]# awk 'NR >= 3' sedtxt

103lidao007COO

104yy,CFO

105feixue,CIO

110lidao,COCO

[root@oldboy81-golden-lnb /oldboy]# sed -n '3$p' sedtxt

103lidao007COO

104yy,CFO

105feixue,CIO

110lidao,COCO

案例05:取出从包含oldboy的行到lidao的行

[root@oldboy81-golden-lnb /oldboy]# cat sedtxt

101oldgirl,CEO

102zhangya,CTO

103lidao007COO

104yy,CFO

105feixue,CIO

110lidao,COCO

root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/lidao/p' sedtxt

101oldgirl,CEO

102zhangya,CTO

103lidao007COO

[root@oldboy81-golden-lnb /oldboy]# awk '/old/ , /lidao/' sedtxt

101oldgirl,CEO

102zhangya,CTO

103lidao007COO

以上就是关于awk命令提取某行的最后一个数值全部的内容,包括:awk命令提取某行的最后一个数值、Linux之awk详解、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9774285.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存