2

私は最後のステップで立ち往生しており、誰かが私を助けてくれることを願っています.

私は2つのファイルを持っています:

ファイル1 =

青りんご

ファイル2 =

青りんご/個数/100

赤桃/個/200

私のコード:

grep -f ファイル1 ファイル2 | sed 's/数量(.*)/totalXYZ/'

= 青リンゴ/XYZ の合計

それを file2 に適用したいので、結果は次のようになります。

ファイル2 =

グリーンアップル/totalXYZ

赤桃/個/200

ありがとう

4

2 に答える 2

0

2 つの grep を使用して 1 行で取得できます。1 つ目はマッチング用で、2 つ目は反転マッチング (-v) を使用しています。そして、2 番目の出力を最初の出力に追加します。

echo -e `grep -f file1 file2 | sed 's/quantity.*/totalXYZ/'`"\n"`grep -vf file1 file2`
于 2012-09-26T14:10:47.100 に答える
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 に答える