Shell脚本从一行中提取特定术语

时间:2016-03-01 23:24:47

标签: shell

我是使用shell脚本的初学者。我想从已经从大文本文件中排除的几行中提取一个特定术语(例如,颞叶),并添加我一起提取的值。

例如,

Line 1: 1    3    13579 586  Right-Temporal  72    73    66   54
Line 2: 2    5    24680 587  Left-Temporal   89    44    65   56

*每个术语之间的空格非常宽,但我似乎无法将空格分开......

如果我想使用shell脚本将数字10455 + 10475加在一起,我可以输入的脚本示例是什么?我在互联网上使用多个网站搜索了这个问题,但似乎没有一个与我正在做的事情有关

1 个答案:

答案 0 :(得分:1)

输入文字(添加额外的行以便更好地解释)

Line 1: 1 3 13579 586 Right-Temporal 72 73 66 54
Line 2: 2 5 24680 587 Left-Temporal 89 44 65 56
Line 3: 2 5    24681 587 Left-Temporal 89 44 65 56
Line 4: 2 5        24682 587 Left-Temporal 89 44 65 56

例如,如果您要过滤掉13579& 24680等。这是第5列,空格作为分隔符,您可以使用以下命令对这些值求和

awk '{total += $5} END {print total}' TemporalLobe.txt

注意:即使文本前面有多个空格,也会将其视为单个分隔符。例如:我添加了Line3&第4行。这两行在第5列前面有额外的空格。awk将额外的空格视为分隔符的一部分。

编辑1:

假设,' Temporal'是grep的关键。

grep Temporal TemporalLobe.txt. | awk '{total += $5} END {print total}' 

同样,您可以将其应用于多个列。

grep Temporal TemporalLobe.txt. | awk '{total += $3 + $4} END {print total}' 
result = 25

<强>解释

  • grep将从大数据文件中提取所需的行&#39; TemporalLobe.txt&#39;。
  • 使用|将此数据传递给awk (管道)
  • awk将提取column3($ 3),column4($ 4)。它将两列相加

即。 Result = ( {1 + 3} + {2 + 5} + {2 + 5} + {2 + 5})

Result = 25