如何在gnuscript中的循环中使用grep命令 [英] How to use grep command in a loop in gnuscript

查看:43
本文介绍了如何在gnuscript中的循环中使用grep命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对不起,我要问多个问题. 我有一个case.dat文件,其中有多个列,我想根据文本中的第2列提取数据数组. 我尝试使用以下脚本,但这给了我错误

sorry, I am asking multiple questions. I have a case.dat file which is having multiple columns and I want to extract array of the data according to colum 2 in the gnuscript. I tried with below script but it is giving me error

array=""
do for [i=300:800:100] {  # I mean start:end:increment. so it should read 300, 400, 500, 600, 700, 800 here
val ="grep i case.dat"        # Want to store the command in a valuel/variable
print val > i.dat              #Here I need to store the data in i.dat
}

错误

line 45: undefined variable: dat

我的bash脚本如下所示

my bash script is like below

##!/bin/bash
case="data"
for i in `seq 100 100 800`
do
       awk '$2=='$i'{print $0}' $case.dat > $i.dat
done

that I want to use at the start of the gnu-script so that the further operation can be done in the rest part of the gnu-script.

推荐答案

gnuplot脚本:

gnuplot script:

do for [i=300:800:100] {
   outfile = sprintf("%d.dat", i)
   command = sprintf("grep %d case.dat",i)
   set print outfile
   print system(command)
   unset print
}

这将创建单独的文件300.dat 400.dat 500.dat等等.

This will create separate files 300.dat 400.dat 500.dat and so on.

如果您想将这些数据子集完全保留在gnuplot内部,即不创建任何新文件,则可以创建命名数据块$ data_300 $ data_400等:

If you want to keep these data subsets entirely internal to gnuplot, i.e. not create any new files, you could instead create named datablocks $data_300 $data_400 etc:

do for [i=300:800:100] {
    eval( sprintf("set print $data_%3d", i) )
    print( sprintf("grep %d case.dat") )
    unset print
}

命名数据块通常可以在任何可以使用文件名的位置使用,例如 plot $data_500 with lines.

Named datablocks can in general be used anywhere you could use a file name, e.g. plot $data_500 with lines.

这篇关于如何在gnuscript中的循环中使用grep命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆