【发布时间】:2015-12-26 17:17:23
【问题描述】:
我有 2 个具有 行数相同 的源文件(一个英文文件和一个意大利文文件),我执行 awk command 以删除 IT.txt 文件中包含更多行的所有行2个字以上
EN.txt
Santa Claus
Pigs don't fly
The son of the father
Elf
Santa Claus
Elf
Sabatons
Shoes
IT.txt
Babbo Natale
I maiali non volano
Il figlio del padre
Elfo
Babbo Natale
Elfo
Scarpe
Scarpe
所以基本上我有这种输出:
EN.txt
Santa Claus
Pigs don't fly
The son of the father
Elf
Santa Claus
Elf
Sabatons
Shoes
IT.txt
Babbo Natale
Elfo
Babbo Natale
Elfo
Scarpe
Scarpe
但同时,我想从 EN.txt 文件中删除相同的相关字符串。我想我可以处理行号(一会儿,然后我找到了一个更好的解决方案),而不是运行另一个 awk 命令以相同的方式删除 EN 文件中超过 2 个单词的字符串,因为翻译可能与源字符串不同(比如有更多单词)。所以我需要把工作重点放在 IT 文件上,EN 文件必须受到我启动的命令的影响。因此,我过滤后的输出一定是这样的:
EN.txt
Santa Claus
Elf
Santa Claus
Elf
Sabatons
Shoes
IT.txt
Babbo Natale
Elfo
Babbo Natale
Elfo
Scarpe
Scarpe
这是我尝试过的命令(建议与上一个问题一起使用),它运行良好:awk 'NR==FNR{if(NF>3){a[NR]}else{a[NR]=1;print > "filtered_it.txt"}} NR!=FNR && a[FNR]{print > "filtered_en.txt"}' IT.txt EN.txt
但是现在我想在这个命令上添加额外的内容,比如删除重复项以获得这样的输出,但要小心那些可能在意大利语中具有相同翻译但它们各自的源字符串不同的行(像 Sabatons 和 Shoes 翻译成 Scarpe)。总之,我只需要同时(以某种方式)从两个文件中删除重复项,而不是从运行每个命令的单个文件中删除重复项。
EN.txt
Santa Claus
Elf
Sabatons
Shoes
IT.txt
Babbo Natale
Elfo
Scarpe
Scarpe
【问题讨论】:
-
这些前导数字真的存在于您的输入和输出文件中吗?如果是,则编辑您的问题以说明这一点,如果不是,则编辑您的问题以删除它们。
-
完成...只是为了理解;)
-
在示例输入/输出文件中放置不存在的文本并不能提高我们的理解力!
-
我没有看到有一个逻辑规则可以用来删除“猪不飞”、“父亲的儿子”等。你认为这可能吗?请编辑您的 Q 以指明“规则”。祝你好运。
-
极不可能有人去查看其他问题来尝试拼凑您当前的需求。如果您真的希望人们帮助您,请编辑您当前的问题,使其具有一组明确的要求和示例输入/输出。