使用bash脚本将数据提取到各种文件
awk '{for(i=1; i<=10; i++){if($1== 2**($i)){getline; print}}}' test.csv>> test/test_$i.csv
描述;我想将数据提取到多个文件,其中输入文件的第1列的大小为2。我想将具有相同大小的行提取到不同的文件中。
输入文件:
4 10.06 9.64 10.36 1000
8 10.16 9.79 10.48 1000
16 10.49 10.02 10.86 1000
32 10.54 10.13 10.91 1000
4 10.76 9.64 10.36 1000
8 10.90 9.79 10.48 1000
答案 0 :(得分:0)
awk 'log($1)/log(2) == int(log($1)/log(2)) { out="pow-" $1; print >out }' file.in
对于给定的数据,这将为N创建等于4,8,16和32的文件pow-N
。
它将跳过第一列中没有数字2的幂的行。
答案 1 :(得分:0)
感谢您的帮助。
我找到了可能的解决方案:
for i in `seq 0 $numline`
do
if [ -e $InDir/$file ]
then
awk -v itr=$i '{if($2== 2**(itr)) {print $0}}' $file >> $OutDir/$(awk "BEGIN{print (2 ** $i)}")mb_$file
fi
done