我有很多文本文件,其中包含数值列(每个文件的列数不同)。我使用MATLAB来存储每个人的内容:
id1 = fopen('texfile.txt','r');
A = fscanf(id1,'%f',[1 Inf]);
fclose(id1);
我想知道如果bash脚本中有任何简单的方法可以为我做同样的事情吗?
答案 0 :(得分:0)
Bash中fscanf
的简单等效内容是read
内置:
read -r A
另一方面,如果我们有多列值,那么可以使用awk
来提取n
列:
awk '{print $n}' < input > output
答案 1 :(得分:0)
不是可以想象的最简单的方法,但你可以使用Bash数组(Bash 4及以上)。
首先,使用换行符作为分隔符读取文件:
IFS_prev="$IFS"; IFS=$'\n';
A=($(cat "textfile.txt"))
IFS="$IFS_prev"
然后,要引用j
th 行中的i
th 元素,请使用:
row=(${A[i]}) # extract ith row and split on spaces
element=${row[j]} # extract jth element