用Shell / Perl脚本查找和打印字符串和一些

时间:2015-11-16 22:34:07

标签: perl shell awk grep

我目前正在尝试编写一个简单的shell脚本,该脚本将读取文件,查找某个字符串,然后打印该字符串和几个字符。这个请求的上下文是我有一组我想要运行的数据文件。这些文件包含一堆元素电离值。我正在尝试找到元素并打印出其电离值。

这里的问题是数据文件还包含某些电离的元素温度,因此至少有两个不同的实例,元素将出现在文件中。每个数据文件都非常标准,所以我可以通过计算我想要的元素出现并打印出那个,但是我想知道是否有更好的方法来做到这一点。假设首先找到节标题“电离值”的位置,然后打印出发生的第一个所述元素值。

这有意义吗?如果没有,请不要犹豫要求澄清!

以下是输入内容的示例:

for ( var i = 0 ; i < x.length ; i++) { 

至于输出,我真正需要的只是元素的值。打印到控制台很好

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以将其保存在文件中并使用2个参数调用它,第一个是元素的名称,第二个是要搜索的文件的名称。元素名称区分大小写:

#!/bin/sh
sed -n "
    /Log10  Mean Ionisation (over radius)/,/^[[:space:]]*$/ {
        /^${1:?}/ p
    }
" "${2:?}"

默认情况下sed命令不打印任何内容(-n),然后,对于“Log10 Mean Ionisation(over radius)”和下一个空白行之间的行,它将搜索模式( element)由第一个脚本参数给出,在行的开头(/^${1:?}),如果找到,则打印行(p)。

引用位置参数的${1:?}${2:?}表示法会导致shell打印错误消息,并在未设置任何参数时退出。