bash脚本可以在多个文件上进行交互

时间:2014-01-17 11:40:54

标签: bash loops sed awk

我需要执行以下任务。这些都包含在bash脚本中。

1)从下面的文件中读取,并读取具有这两个文件的所有行 var1 =“AB”和var2 =“14003”我需要捕获col 4中的子串,len为8,比如var3,(数组,概率或循环,然后删除那些行。

2 *563587992014-01-26      2014-01-26T09:45:53     AB  14003 5         3.60
2  563589242014-01-26      2014-01-26T10:03:13     AB  14003 6         4.80
2  563589252014-01-26      2014-01-26T10:03:20     TC  14002 2         5.50
2  563589272014-01-26      2014-01-26T10:03:34     FF  14002 3         3.30

匹配标有*的字段 2)然后我需要通过收集的子串并打开另一个文件,如下所示,并删除子串(4,8)与var3中收集的前一个匹配的所有行

    56370388   1   1.000    95         0.80Double Coffe
   *56358799   1   1.000    94         0.40Milk‚
   *56358799   2   1.000    94         0.40Coffe‚
    56370388   1   1.000    97         0.40Descafe

我想的可能是在嵌套循环中,使用awk和sed。但投入将不胜感激:)

1 个答案:

答案 0 :(得分:1)

这是一个开始:尝试以下bash脚本:

#! /bin/bash

var1="AB"
var2="14003"

awk -vv1="$var1" -vv2="$var2" '    
    NR==FNR {
        if ($4==v1 && $5==v2) {
            s=substr($0,4,8)
            a[s]++
        }
        next
    }
    !($1 in a) {
        print
    }' file1 file2

输出:

56370388   1   1.000    95         0.80Double Coffe
56370388   1   1.000    97         0.40Descafe