我想从控制文件中获取数量

时间:2017-12-05 07:08:50

标签: linux shell

我想从控制文件中获取数据。控制文件的名称为AA.dat(例如),文件中的数据如下所示。

AA.dat  200

从上面的文件中我只想选择值200.当我尝试使用cut命令时,我无法得到结果。

3 个答案:

答案 0 :(得分:0)

只需 grep

cnt=$(grep -o -m1 '[0-9]*$' AA.dat)
  • [0-9]*$ - 匹配行尾[0-9]*的任意位数$
echo "$cnt"
200

答案 1 :(得分:0)

或者如果您事先知道文件格式,也可以简单地使用read,例如

read -r stuff cnt <AA.dat

您只需将文件中的第一行读入两个变量即可。 stuff将保留第一个以空格分隔的字符串,cnt将保留您案例中{(1}}行的其余部分,例如:

200

$ read -r stuff cnt <AA.dat; echo "cnt: $cnt" cnt: 200 是另一种访问第二列数据的简便方法。在最简单的形式中,它将输出所有行的第二列(在您的情况下为1行):

awk

shell还提供参数扩展,其中子串删除子串替换。在将整行读入单个变量后,两者都可用于隔离$ awk '{print $2}' AA.dat 200

Shell依赖(使用bash等),您还可以将该行读入数组,然后使用感兴趣的元素。有很多方法可以处理它。

接受你的选择。唯一的注意事项是使用shell内置来防止为您使用的任何实用程序调用单独的子shell。如果在大文件的循环内重复调用该实用程序 - 实用程序(而不是内置函数)可以显着增加脚本运行时。如果你只是称之几次,差异可以忽略不计。

答案 2 :(得分:0)

使用cut

的解决方案
$ cut -d' ' -f2 < AA.dat
200

使用awk

$ awk '{print $2}' AA.dat
200