Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本从一行中提取特定的术语_Shell - Fatal编程技术网

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

Shell脚本从一行中提取特定的术语,shell,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脚本将数字1045

我是一个使用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添加到一起,我可以输入的脚本示例是什么?我在互联网上使用多个网站搜索了这个问题,但似乎没有一个问题与我正在做的事情相关

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

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

awk '{total += $5} END {print total}' TemporalLobe.txt
注意:即使文本前面有多个空格,也会将其视为单个分隔符。例如:我添加了第3行和第4行。这两行在第5列前面有额外的空格
awk
将附加空格视为分隔符的一部分

编辑1: 假设“时态”是
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将从大数据文件“temporalobe.txt”中提取所需的行
  • 使用|(管道)将此数据传递到
    awk
  • awk将提取column3($3),column4($4)。它将两列相加
i、 e.
Result=({1+3}+{2+5}+{2+5}+{2+5})


Result=25

10455+10475是否与两个样本LLNE有任何连接?回到这个例子,你想用这个例子做什么?10455和10475分别代表这个区域的体积。在这种情况下,右颞叶是10455个体素。我想将所有区域的卷加在一起,以找到总卷,并与类似卷的其他主题进行交叉检查。我相信这些行是由制表符分隔的。制表符和空格的作用相同吗?@GT\u Dunk,你的意思是所有数据都在一行中并由制表符空格分隔吗??或者第5列的值由制表符空格分隔?@GT_Dunk,即使列由制表符空格分隔,上述答案也有效。试试这个命令。让我们知道结果。在我的例子中,每一行都是使用grep独立显示的。所以我基本上使用了grep“Right TemporalLobe”temporalobe.txt。当我尝试使用这些命令时,它给了我一个比实际值大得多的数字。是不是因为每一行都是独立的,而不是集中在一个文件中?@GT\u Dunk,我们也可以包含grep命令。我已经更新了我的答案。请查收
grep Temporal TemporalLobe.txt. | awk '{total += $3 + $4} END {print total}' 
result = 25