我被困在最后一步,希望有人能帮助我。
我有 2 个文件:
文件1 =
青苹果
文件2 =
青苹果/数量/100
红桃/数量/200
我的代码:
grep -f 文件1 文件2 | sed 's/数量(.*)/totalXYZ/'
= 青苹果/totalXYZ
我想将它应用到 file2 所以结果看起来像这样:
文件2 =
青苹果/totalXYZ
红桃/数量/200
谢谢
我被困在最后一步,希望有人能帮助我。
我有 2 个文件:
文件1 =
青苹果
文件2 =
青苹果/数量/100
红桃/数量/200
我的代码:
grep -f 文件1 文件2 | sed 's/数量(.*)/totalXYZ/'
= 青苹果/totalXYZ
我想将它应用到 file2 所以结果看起来像这样:
文件2 =
青苹果/totalXYZ
红桃/数量/200
谢谢
您可以通过以下方式使用 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
任何问题?给我留言。
您可以使用 2 个 grep 在一行中获取它:第一个用于匹配,第二个使用反转匹配 (-v)。然后将第二个输出附加到第一个输出:
echo -e `grep -f file1 file2 | sed 's/quantity.*/totalXYZ/'`"\n"`grep -vf file1 file2`