从文本中提取和拆分单词,并仅使用shell终端regex按出现顺序列出它们



我有下面的文本(这种格式(,我希望这些单词按照它们在垂直列表中出现的顺序一个接一个地分隔和放置,就像这个例子一样https://stackoverflow.com/a/21672824/10824251.我尝试了egrep -vi "'?[^\p{L}']+'?|^'|'$" mytext.txt > output.txt,但没有得到任何结果,只是output.txt没有(空(内容。

我的文本:

教学心理学是教育心理学的一部分,指学校教育。正如稍后将看到的,两者都有相同的目标:研究、解释和理解行为变化的过程由于人们参与活动教育什么赋予了一个适合教学的实体心理学是教育的本质和特征存在于所研究的行为变化基础上的活动。

我的葡萄牙语文本:

心理学是一门教育心理学参考《教育》。大使我的目标:estudar,解释和压缩的过程产品的组成部分参加教育活动的委员会。O que职业精神病会议作为教育活动的一部分,存在着一个基础mudanca过程是一个组成部分。

您可能希望通过空白标记文本:

grep -o '[^[:space:]][^[:space:]]*' mytext.txt > output.txt
grep -o '[^[:space:]]{1,}' mytext.txt > output.txt
grep -oE '[^[:space:]]+' mytext.txt > output.txt

或者,您可以使用PCRE正则表达式提取所有1+字母(p{L}(、变音符号(p{M}(和数字(p{N}(块,如:

grep -oP '[p{L}p{M}p{N}]+'  mytext.txt > output.txt

请参阅在线演示。您需要在MacOS上使用pcregrep才能正常工作。

最新更新