我想从控制文件中获取数据。控制文件的名称为AA.dat
(例如),文件中的数据如下所示。
AA.dat 200
从上面的文件中我只想选择值200.当我尝试使用cut
命令时,我无法得到结果。
答案 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