我正在尝试根据另一个文件提取数据。File1的子字符串用作索引,以查找File2中的匹配项。当要搜索的字符串inf file2位于空间之间或隔离之间时,所有功能都可以,但是当加入到其他字段时,awk找不到它。有没有办法使尴尬匹配file2中的任何部分?
awk -vv1="$Var1" -vv2="$var2" '
NR==FNR {
if ($4==v1 && $5==v2) {
s=substr($0,4,8)
echo $s
a[s]++
}
next
}
!($1 in a) {
print
}' /tmp/file1 /tmp/file2
有效的示例:file1:
1 554545352014-01-21 2014-01-21T16:18:01 FS 14001 1 1.10
1 554545362014-01-21 2014-01-21T16:18:08 FS 14002 1 5.50
file2:
55454535 11 17 102 850Sande Fiambre 1.000
55454536 11 17 17 238Pesc. Dourada 1.000
不起作用的示例:
file2:
5545453501/21/20142 1716:18 1 1 116:18
5545453601/21/20142 1716:18 1 1 216:18
例如:55454535在工作示例中找到匹配的字符串,但没有在底部。
您可能要替换此:
!($1 in a) {
print
}
这样(或类似的 - 您的要求尚不清楚):
{
found = 0
for (s in a) {
if ($1 ~ "^"s) {
found = 1
}
}
if (!found) {
print
}
}
使用REGEX比较〜而不是==
ex。如果($ 4〜V1&& $ 5〜V2)
如果您想单词仅以字符串开头,如果您想word word word with with with