-1

我在文件 A 中有一个字符串列表,我试图与文件 B 的第一列匹配并输出文件 b 中具有完全匹配的所有字段。这是我正在使用的 awk 脚本,但它不断给我错误。我看不出问题来。任何帮助表示赞赏。

while read line
{
    awk '{($1~/'"$line"'/) print $1}' fileB
} 
done < fileA
4

3 回答 3

2

这作为 awk 脚本没有意义:

{($1~/'"$line"'/) print $1}

我认为您正在尝试查看第一列 ( $1) 是否包含$line. 如果是这种情况,您的匹配表达式需要超出大括号,并且您不需要/正则表达式周围的斜线 ( ),如下所示:

$1 ~ '"$line"' {print $1}

您可以通过将变量传递给 awk 来节省一些引用,如下所示:

awk -v line="$line" '$1 ~ line {print $1}'
于 2013-07-24T14:54:08.457 回答
1

没有输入/输出的例子,只是猜你想要什么,你提到(完全匹配)试试这个:

awk 'NR==FNR{a[$0];next}$1 in a' fileA fileB
于 2013-07-24T14:55:45.347 回答
0

的代码:

sed 's#.*#/^&/p#' fileA|sed -nf - fileB
于 2013-07-24T16:46:52.350 回答