我需要让
diff
忽略我输入的大小写。 两个输入都包含德语变音符号,例如 ä 和 ä。 选项 -i
成功地使 diff
忽略我输入的其他字符(如 a 和 A)的大小写,但不忽略变音符号:
$ diff -i <(echo ä) <(echo Ä)
1c1
< ä
---
> Ä
输出应该为空,因为如果忽略大小写,ä 和 ä 应被视为相同的字母。 如果我尝试这个:
$ diff -i <(echo a) <(echo A)
然后它按预期工作(无输出)。
我还尝试设置环境变量
LANG
以使diff
使用正确的语言环境,但这似乎没有任何影响:
LANG=de_DE.UTF-8 diff -i <(echo ä) <(echo Ä)
我尝试了
LANG
的各种值。
有没有办法让
diff
忽略德语变音符号的大小写?
(我使用的是 Ubuntu 22.04 FWIW。)
一个简单的方法:
de-ascii()(
sed '
s/utf/utf_/g
s/ä/utf{ae}/g
s/Ä/utf{Ae}/g
' "$@"
)
ascii-de()(
sed '
s/utf{ae}/ä/g
s/utf{Ae}/Ä/g
s/utf_/utf/g
' "$@"
)
diff -i <(echo ä | de-ascii) <(echo Ä | de-ascii) | ascii-de
utf
可能不是一个好的选择)