我需要执行以下任务。这些都包含在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。但投入将不胜感激:)
答案 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