请注意,我理解如何在一个文件中输出不在另一个文件中的行(here),我的问题有点不同。
在一个文件中,我有类似于
的行Андреев
Барбашев
Иванов
...
在另一个文件中有行:
Барбашёв
Семёнов
...
现在。我需要第二个文件中的行,但只有当你在第一个用ё代替ё时才能找到一行。例如,Барбашёв
不应显示,因为Барбашев
位于第一个。
如果我做的话
comm -13 first.txt <(cat second.txt | sed 's/ё/е/g')
我得到了正确的线条,但是,到那时它们已经被转换了,这对我正在尝试做的事情来说是不可接受的。
换句话说,输出是:
Барбашев
...
虽然应该
Барбашёв
...
答案 0 :(得分:1)
你的意思是:
“现在。我需要第二个文件中的行,但是只有当你在第二个文件中用ё代替е时才能在第一个中找不到行。”
而不是
“现在。我需要第二个文件中的行,但前提是你在第一个中找不到一行代替ё。”
右?
不使用cyrilic字符集,此解决方案有效:
file test.awk
#!/usr/bin/gawk -f
{
if(NR==FNR)
arr[$1]++;
else {
tmp=$1;
gsub("t","e",tmp)
if(!(tmp in arr))
printf("%s\n", $1);
}
}
使用:
$ ./test.awk file1 file2
如果您替换“t” - &gt; “ё”这也应该工作imo。也许你可以试试。