我有一个很长的单词列表(有重复(,如下所示:
列表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 原始文件