仅从shell终端正则表达式中提取单词并从文本中拆分单词,然后按出现的顺序列出它们

问题描述 投票:1回答:1

我有此文字的波纹管(采用这种格式),我希望单词在垂直列表(如此示例https://stackoverflow.com/a/21672824/10824251)中的出现顺序被分开并一一放置。我尝试egrep -vi "'?[^\\p{L}']+'?|^'|'$" mytext.txt > output.txt,但仅output.txt没有(空)内容,我没有任何结果。

我的文字:

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

我的葡萄牙语文字:

Ensino psicologia do ensco e part of da psicologia daeducacãoque se请参阅esucalar educacascoo。科莫·塞·韦拉·迈斯·阿迪安特,阿巴斯·特姆姆邮编:Estudar,Explicar e Compreender os processos de穆丹卡互补性鼻息肉参加教育活动的结果。 Ø阙授予uma entidade pro'pria a psicologia do ensino e自然作为大地主教科书dos processos de mudanca Compesttamental estudados。

regex list shell split word
1个回答
1
投票

您可能想通过空格标记文本:

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

或者,您可以使用PCRE regex提取所有1+个字母(\p{L}),变音符号(\p{M})和数字(\p{N})的所有块:

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

请参见online demo。您需要在MacOS上使用pcregrep才能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.