2

我被困在最后一步,希望有人能帮助我。

我有 2 个文件:

文件1 =

青苹果

文件2 =

青苹果/数量/100

红桃/数量/200

我的代码:

grep -f 文件1 文件2 | sed 's/数量(.*)/totalXYZ/'

= 青苹果/totalXYZ

我想将它应用到 f​​ile2 所以结果看起来像这样:

文件2 =

青苹果/totalXYZ

红桃/数量/200

谢谢

4

2 回答 2

0

您可以通过以下方式使用 AWK 获取它:

awk -f grepandreplace.awk file2 file1

“grepandreplace.awk”的代码是:

#!/usr/bin/awk -f
BEGIN {
    FS = "/";
    f_grep = ARGV[2];
    ARGC = 2;

    while ((getline < f_grep) > 0) {
        grep[$1] = "";
    }
}

{
    if ($1 in grep) {
        print $1"/totalXYZ";
    } else {
        print $0;
    }
}

我得到了你想要的输出:

Green Apple/totalXYZ
Red Peach/quantity/200

任何问题?给我留言。

于 2012-09-26T14:02:59.397 回答
0

您可以使用 2 个 grep 在一行中获取它:第一个用于匹配,第二个使用反转匹配 (-v)。然后将第二个输出附加到第一个输出:

echo -e `grep -f file1 file2 | sed 's/quantity.*/totalXYZ/'`"\n"`grep -vf file1 file2`
于 2012-09-26T14:10:47.100 回答