Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用正确的grep选项_Linux_Shell_Ubuntu_Grep - Fatal编程技术网

Linux 使用正确的grep选项

Linux 使用正确的grep选项,linux,shell,ubuntu,grep,Linux,Shell,Ubuntu,Grep,我需要帮助在shell脚本中设置正确的grep命令。 我目前使用的是: grep '[A-Za-z]|' words (我使用的是一个巨大的文本文件,里面有很多单词,只有几本字典那么大。) 问题是我必须过滤掉单字母单词(除了a,I&o),并且单词不能少于2个字符,并且必须包含一个元音 我不知道怎么做。我假设你用“或”这个词。我尝试使用但失败的是: grep '[A-Za-z]|[a,i,o]' 然后我不知道如何强制它匹配2个字符。我认为下面的正则表达式可以完成这项工作: ^[^aio]{1}

我需要帮助在shell脚本中设置正确的grep命令。 我目前使用的是:

grep '[A-Za-z]|' words
(我使用的是一个巨大的文本文件,里面有很多单词,只有几本字典那么大。)

问题是我必须过滤掉单字母单词(除了
a
I
&
o
),并且单词不能少于2个字符,并且必须包含一个元音

我不知道怎么做。我假设你用“或”这个词。我尝试使用但失败的是:

grep '[A-Za-z]|[a,i,o]'

然后我不知道如何强制它匹配2个字符。

我认为下面的正则表达式可以完成这项工作:

^[^aio]{1}|[a-zA-Z0-9]{2,}$

假设要选择有效单词,请不区分大小写,其中有效单词可以是:

  • 单字母单词“a”、“i”、“o”
  • 以元音开头的两个或多个字母的单词
  • 以元音结尾的两个或多个字母的单词
  • 中间有元音的三个或更多字母的单词
然后您可以使用:

grep -Eiwo -e '[aio]|[aeiouy][a-z]+|[a-z]+[aeiouy]|[a-z]+[aeiouy][a-z]+'
选项:

  • -E
    扩展正则表达式(使用
    |
    +
  • -i
    不区分大小写
  • -w
    匹配单词边界
  • -o
    仅输出匹配项
  • -e regexp
    -要匹配的正则表达式
正则表达式:

  • 4个由
    |
  • 选择单字母单词
  • 选择以元音开头并在前导元音后包含一个或多个字母的单词
  • 选择以元音结尾并在尾随元音前包含一个或多个字母的单词
  • 选择以一个或多个字母开头,后跟元音的单词,然后选择一个或多个字母
这些模式并不相互排斥。例如,给定输入单词“双簧管”,所有三个多字母模式都与之匹配-只有单字母模式失败(毕竟它有四个字母)。然而,只有一种模式需要匹配它;其他人不会更改该单词的输出

以下是一些文字(据说来自“德古拉”):

“然后他嘲弄地对我说,'所以你和其他人一样,会玩
你的大脑对抗我你会帮助这些人追捕我
在我的设计中挫败我!你现在知道了,他们已经部分知道了,
很快就会完全明白,我的人生道路上会发生什么
应该把精力放在离家更近的地方
他们用智慧攻击我,攻击我这指挥列国,勾心斗角的人
为了他们,为了他们而战斗,在他们诞生之前几百年
出生——我在反击他们。而你,他们最爱的人,现在是
对我来说,血肉之躯;血肉之躯;血肉之躯;我的亲人;我的慷慨
把酒榨一会儿,我的同伴和我的朋友稍后会来
你们要依次报仇,因为他们中没有一个,只有一个
照顾你的需要。但你现在要为你所做的事受到惩罚
你已经做了。你帮助我挫败了;现在你要到我这里来
打电话,当我的大脑说“来吧!“对你来说,你将穿越陆地或海洋到达目的地
“照我的吩咐去做;为了这个目的!”说着,他拉开了门
他穿着一件衬衫,用他那锋利的长指甲打开了他胸前的一条静脉
血开始喷出,他抓住我的一只手,握着我的手
他们紧紧地抓住了我的脖子,用另一只手捂住我的嘴
伤口,让我要么窒息要么吞下一些----哦
我的上帝!我的上帝!我做了什么?我做了什么才配得上这样的惩罚
命运啊,我这一生都试图在温柔和正义中行走的人
天啊,可怜我吧!瞧不起一个比死亡还要危险的可怜的灵魂;
然后她开始抚摸她
嘴唇仿佛是为了净化污染。
“哦,不,我不难过,”她回答,“但我更感动了。”
我无法用你的悲伤来形容。那是一台奇妙的机器,但它确实是
这是残酷的事实。它用自己的语调告诉了我你内心的痛苦。
这就像一个向全能的上帝呼喊的灵魂,没有人必须听到他们
再说一遍!看,我已经尽力发挥作用了。我已经抄写了
在我的打字机上写下的字,现在没有人需要听到你的心跳,就像
是的。”
这是通过上面的
grep
命令从该文本中选择的已排序、不区分大小写的单词列表,以列格式显示:

a再次攻击所有全能者
痛苦也会被报复
在开始最爱的血液之前
天生富于脑力,但靠乳房
呼唤能净化更近距离的伴侣
抄袭反雷十字残酷哭泣天亲爱的
值得一试的设计有没有让人心疼
任何一端的能量都是命中注定的
从挫折中奋起,满神悲伤的双手
他有没有听到她的心声
他的家里有几百个我
好奇的是它的亲戚知道吗
落地后就像长嘴唇的机器
我这些温顺的人嘲笑地怜悯我的牧师
我的嘴必须更加致命
脖子不需要,现在不需要
在一个打开或打开的
其他