将列表中的字词替换为另一个列表中共享一些字母的字词



我有一个很长的单词列表(有重复(,如下所示:

列表1.txt

Apple
Pear
Banana
Banana
Banana
Banana
Orange
Orange

我想将 list1.txt 中的每个单词替换为另一个单词列表(没有重复(,list2.txt,其中包含 list1 的相同单词.txt以及更多内容:

列表2.txt

Apple_red
Pear_green
Banana_yellow
Orange_orange

我需要这样的输出:

列表3.txt

Apple_red
Pear_green
Banana_yellow
Banana_yellow
Banana_yellow
Banana_yellow
Orange_orange
Orange_orange

有什么建议吗?谢谢!

您可以使用此awk

awk -F'_' 'NR==FNR{a[$1]=$0; next} {print a[$1]}' list2.txt list1.txt

Apple_red
Pear_green
Banana_yellow
Banana_yellow
Banana_yellow
Banana_yellow
Orange_orange
Orange_orange

这可能对你有用:

uniq list1.txt | paste -d/ - list2.txt | sed 's#.*#s/&/#' | sed -f - list1.txt
  • 从列表 1 中删除重复项.txt
  • 使用/作为分隔符联接列表 1.txt 和列表 2.txt。
  • 根据上述结果创建 sed 替换脚本。
  • 将 sed 脚本应用于 list1.txt 原始文件

最新更新