传递变量grep命令

时间:2017-10-16 07:14:42

标签: bash awk

给定的文本文件(比如foo * .txt)数据如下。

1 g = 0.54 0.00   
2 g = 0.32 0.00  
3 g = 0.45 0.00
...
5000 g = 0.5 0.00

基本上,我想在匹配行之前和之后提取10行(包括匹配行)。匹配行包含59个字符,包含字符串,空格和数字。

我有一个脚本如下:

#!/usr/bin/bash
for file in file*.txt;
do
var=$(command_to_extract_var) # 59 characters containing strings, spaces and numbers
                              # to get this var, I use grep and head
grep -C 10 "$var" "$file"
done > bar.csv

通过bash -x script_name.sh运行脚本提供以下内容:

+ for file in 'foo*.txt'
++ grep 'match_pattern' foo1.txt
++ awk '{print $6}'
++ head -n1
++ grep '[0-9]'
+ basis=150
++ grep 'match_pattern' foo1.txt
++ tail -n1
++ awk '{print $3}'
+ number=25
++ grep '[0-9] f = ' foo.txt
++ tail -n150

接下来是许多行(甚至高达1000行),如

  

001 h = 0.000000000000000E + 00 e = 3.543218084205956E + 00

最后,

文件名太长

+ final=
+ grep -C 10 '' foo1.txt

我期望的输出是(每个文件一列):

0.54   0.62  0.36 ... 0.45
0.32   3.25  0.89 ... 0.25
0.45   0.96  0.14 ... 0.14
...    ....  .... ... 0.96
0.25   0.00  7.23 ... 0.77

0 个答案:

没有答案