如何解析我想在shell命令中提取的单词?

时间:2016-01-11 07:19:20

标签: linux shell parsing

我是linux命令的新手。

我正在尝试管理大型数据文件,我正在向您展示如下所示的一行。

6       129781361       TAR20   DB;DP=95;FS=0.321;GC=39.60;MQ=60.00;SOMATIC;VT=SNP

我想要提取的是“FS及其价值。

所以,我想在FS字段中包含一个值0.321。

当然,我可以使用R语言和其他编程语言提取这些值。

然而,这是非常费力的任务,因为我现在使用linux命令。

因此,我想学习如何提取FS字段及其价值。

你能告诉我如何以有效的方式从FS中提取0.321吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用awk

awk -F '[ ;,]+' '{print $6}' file
FS=0.321

获得价值部分:

awk -F '[ ;,]+' 'split($6, a, "="){print a[2]}' file
0.321

或使用grep -oP(gnu-grep):

grep -oP 'FS=\K[\d.]+' file
0.321

答案 1 :(得分:1)

例如,您可以使用:

127.0.0.1

这将提取" FS ="之间的所有内容。和下一个分号或行尾,以先到者为准。