将变量与一列的几行进行比较,如果匹配,则取第二列的值



我在Shell脚本中将变量的值与文件中的数千个值进行比较时遇到了问题。例如,假设我有一个可变

vel=8.14205

我有一个有四列的文件,但最重要的是前两列,

7.9 white   7.90001 white   L
7.90001 white   7.90002 white   L
7.90002 white   7.90003 white   L
7.90003 white   7.90004 white   L
7.90004 white   7.90005 white   L
7.90005 white   7.90006 white   L
7.90006 white   7.90007 white   L
7.90007 white   7.90008 white   L
7.90008 white   7.90009 white   L
7.90009 white   7.9001  white   L
7.9001  white   7.90011 white   L
7.90011 white   7.90012 white   L
7.90012 white   7.90013 white   L
7.90013 white   7.90014 white   L
.
.
.
8.05034 gray81  8.05035 gray81  L
8.05035 gray81  8.05036 gray81  L
8.05036 gray81  8.05037 gray81  L
8.05037 gray81  8.05038 gray81  L
8.05038 gray81  8.05039 gray81  L
8.05039 gray81  8.0504  gray81  L
8.0504  gray81  8.05041 gray81  L
8.05041 gray81  8.05042 gray81  L
8.05042 gray81  8.05043 gray81  L
8.05043 gray81  8.05044 gray81  L
8.05044 gray81  8.05045 gray81  L
.
.
.
8.69995 black   8.69996 black   L
8.69996 black   8.69997 black   L
8.69997 black   8.69998 black   L
8.69998 black   8.69999 black   L
8.69999 black   8.7 black   B

如果在成千上万的线路中有一条线路带有

8.14205 gray84

那么我需要将其保存在另一个变量"中;gray84";。

有人知道我该怎么做?

我将非常感激!

如果使用问题中提供的示例数据并添加行8.14205 gray84,则awk选项可能为:

$ vel=8.14205
$ vel_color=$(awk -v vel="$vel" '{if ($1==vel) {print $2}}' src.dat)
$ echo "$vel_color"
gray84

使用存储在vel变量中的值与第一个字段中的值进行比较。当有匹配时,打印第二个字段。

相关内容

  • 没有找到相关文章

最新更新