私は最後のステップで立ち往生しており、誰かが私を助けてくれることを願っています.
私は2つのファイルを持っています:
ファイル1 =
青りんご
ファイル2 =
青りんご/個数/100
赤桃/個/200
私のコード:
grep -f ファイル1 ファイル2 | sed 's/数量(.*)/totalXYZ/'
= 青リンゴ/XYZ の合計
それを file2 に適用したいので、結果は次のようになります。
ファイル2 =
グリーンアップル/totalXYZ
赤桃/個/200
ありがとう
私は最後のステップで立ち往生しており、誰かが私を助けてくれることを願っています.
私は2つのファイルを持っています:
ファイル1 =
青りんご
ファイル2 =
青りんご/個数/100
赤桃/個/200
私のコード:
grep -f ファイル1 ファイル2 | sed 's/数量(.*)/totalXYZ/'
= 青リンゴ/XYZ の合計
それを file2 に適用したいので、結果は次のようになります。
ファイル2 =
グリーンアップル/totalXYZ
赤桃/個/200
ありがとう
2 つの grep を使用して 1 行で取得できます。1 つ目はマッチング用で、2 つ目は反転マッチング (-v) を使用しています。そして、2 番目の出力を最初の出力に追加します。
echo -e `grep -f file1 file2 | sed 's/quantity.*/totalXYZ/'`"\n"`grep -vf file1 file2`
次の方法で 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
質問は?コメントを残してください。