给定的文本文件(比如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