Grep,同时排除像变音符号这样的特殊字母

时间:2017-02-02 02:02:16

标签: regex bash grep diacritics

我正在运行Mint Xfce并尝试使用以下命令从终端grep:

:P1_EMAIL is not null

源文件是一个文本文件,其中每一行看起来像

grep -E -o '^[A-Za-z]{1,}\s[A-Za-z]{1,}\s[0-9]{1,}' sourcefile.txt | sort -f > newfile.txt

其中字符串包含字母,数字,标点符号和特殊字符,数字为整数。

我的目标是提取两个字符串和第一个数字只是字符串只包含英文字母的行(a-z,大写或小写)。

上面的命令省去了带有标点符号和数字的字符串,但字符串中有特殊字母的行(如u umlauts(Ü))以某种方式通过并发送到newfile.txt。我觉得我错过了一些明显的东西,但是大量的谷歌搜索只让我回过头来讨论如何用特殊字母进行grep。我已经在https://regex101.com/测试了正则表达式而且变音符号没有匹配,这让我觉得问题不在于我的正则表达式。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

您必须临时更改区域设置。 尝试:

LC_ALL="C" grep -E -o '^[A-Za-z]{1,}\s[A-Za-z]{1,}\s[0-9]{1,}' sourcefile.txt | sort -f > newfile.txt

它在Ubuntu上对我有用。 要切换回您的区域设置,只需关闭控制台窗口。