shell脚本从两个字符串之间的文件中获取字符串

时间:2017-11-20 12:42:32

标签: arrays string shell awk sed

我需要提取文件中的字符串,使得输入= 之后的字符串出现在输出之前 在下面指定的示例中,我有三个测试用例,我想将字符串存储在数组

<div>

示例 file.txt的

This is a div

1 个答案:

答案 0 :(得分:0)

无论如何,这是一个快速而肮脏的解决方案。谢谢你让我有机会练习awk。它适用于gawk

awk '/^case/, /^output/ {
#get case number
    if($0 ~ /^case/) {
        i=1
        s=""
        split($0, a)
        c = int(a[3]) - 1
    }
#get first input
    if($0 ~ /^input/) {
        split($0, b, "=")
        arr[i++]=int(b[2])
    }
#get other inputs
    if($0 ~ /^[0-9]+/) {
        arr[i++]=int($0)
    }
#print formatted string
    if($0 ~ /^output/) {
        for(j=1;j<i-1;j++){
            s=s""arr[j]"\n"
        }
        s=s""arr[i-1]"\"\n"
        printf("array[%d]=\"%s", c, s)
    }
}' File.txt