使用bash脚本将数据提取到各种文件

时间:2017-09-03 16:55:07

标签: bash awk

使用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

2 个答案:

答案 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