Questions tagged «regular-expression»

正则表达式是匹配字符串中字符模式的一种方式。

3
正确的正则表达式在grep中不起作用
我有这个正则表达式: (?<=prefix).*$ 它返回字符串“ prefix”之后的任何字符,并且在任何在线正则表达式引擎(例如https://regex101.com)上都能正常工作。问题是当我在bash中使用该正则表达式时: grep '(?<=prefix).*$' <<< prefixSTRING 它不匹配任何东西。为什么该正则表达式不适用于grep?

2
bash脚本中的正则表达式
这是我第一次使用bash脚本,所以我很容易犯一个错误。 基本上,我正在尝试编写一个获取用户组的脚本,如果它们在某个组中,它将相应地进行记录。显然会有更多功能,但是当我什至无法使正则表达式正常工作时,毫无意义! 到目前为止,我有这个: #!/bin/bash regex="^([a-zA-Z0-9\-_]+ : [a-zA-Z0-9\-_]+) (usergroup)$" # example output groups="username : username usergroup" echo "$groups" >> /home/jrdn/log if [[ "$groups" =~ $regex ]]; then echo "Match!" >> /home/jrdn/log else echo "No match" >> /home/jrdn/log fi 我尝试过该正则表达式的每个地方都可以使用。但是在bash脚本中,它只输出$groups,然后输出No match。那么有人可以告诉我这是怎么回事吗?

3
如何在不再次调用sed或awk的情况下从字符串中删除点字符?
我有一个hostlist.txt包含以下内容的文件: host1.mydomain.com host2.mydomain.com anotherhost www.mydomain.com login.mydomain.com somehost host3.mydomain.com 我有以下小脚本: #!/usr/local/bin/bash while read host; do dig +search @ns1.mydomain.com $host ALL \ | sed -n '/;; ANSWER SECTION:/{n;p;}'; done <hostlist.txt \ | gawk '{print $1","$NF}' >fqdn-ip.csv 输出到fqdn-ip.csv: host1.mydomain.com.,10.0.0.1 host2.mydomain.com.,10.0.0.2 anotherhost.internal.mydomain.com.,10.0.0.11 www.mydomain.com.,10.0.0.10 login.mydomain.com.,10.0.0.12 somehost.internal.mydomain.com.,10.0.0.13 host3.mydomain.com.,10.0.0.3 我的问题是如何删除.逗号前的内容而不进行调用sed或gawk再次调用?我可以在现有步骤中执行某些步骤,sed还是gawk可以删除点的调用? hostlist.txt 将包含数千个主机,因此我希望我的脚本快速高效。


4
.ssh / config中的正则表达式
在工作中,我经常必须登录遵循通用命名方案的主机,例如qc01- qc12,hc01- hc10等。所有这些都需要在笔记本电脑的中获得相同的配置值.ssh/config。当然,我可以对host qc*和使用条目hc*,但是我想知道是否可以使用正则表达式?

2
在命令行上转义正则表达式反斜杠所需的反斜杠数
我最近在命令行上遇到一些正则表达式时遇到麻烦,发现为了匹配反斜杠,可以使用不同数量的字符。此数字取决于用于正则表达式的引号(无,单引号,双引号)。请参阅以下bash会话了解我的意思: echo "#ab\\cd" > file grep -E ab\cd file grep -E ab\\cd file grep -E ab\\\cd file grep -E ab\\\\cd file #ab\cd grep -E ab\\\\\cd file #ab\cd grep -E ab\\\\\\cd file #ab\cd grep -E ab\\\\\\\cd file #ab\cd grep -E ab\\\\\\\\cd file grep -E "ab\cd" file grep -E "ab\\cd" file grep …


3
bash使用哪种正则表达式引擎类型?
我使用RegEx Buddy对正则表达式进行原型设计和调试。RegEx Buddy允许我在多种不同的正则表达式引擎类型(.NET,Java,Perl,GNU BRE,GNU ERE,POSIX,BRE,POSIX ERE等)之间进行选择。 bash使用什么正则表达式引擎(例如in if和casestatement)?我正在运行Centos 5.5 32位和bash 3.2.25(1): [kevin@mon01 scratch]$ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. 我猜是GNU BRE还是GNU ERE?

2
如何保存复杂的正则表达式以在sed中多次重用?
在使用时sed,我经常创建相当复杂的正则表达式,我需要在一个文件中进行两次匹配。我有办法保存此正则表达式并仅引用它两次吗? 也许看起来像这样? sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/ s/complicated_regex:complicated_regex/simple-output/ ' my_file 更新:一个答案提出了使用bash变量的解决方案。这行不通。给定一个test.txt。 #test.txt foo bar bar foo 和脚本 #!/bin/bash VALUE='foo \([a-z]\+\)' sed 's/"${VALUE}"/foo happy \1/' test.txt 这应该产生输出 foo happy bar bar foo 但是我得到了错误 sed: -e expression #1, char 24: invalid reference \1 on `s' command's RHS

3
Bash =〜正则表达式和https://regex101.com/
我使用https://regex101.com/构建了一个正则表达式,以返回字符串中IP地址的首次出现。 RegExp: (?:\d{1,3}\.)+(?:\d{1,3}) RegExp包括定界符: /(?:\d{1,3}\.)+(?:\d{1,3})/ 使用以下测试字符串: eu-west 140.243.64.99 它返回完全匹配的: 140.243.64.99 无论我对锚等如何尝试,以下bash脚本都无法与生成的正则表达式一起使用。 temp="eu-west 140.243.64.99 " regexp="(?:\d{1,3}\.)+(?:\d{1,3})" if [[ $temp =~ $regexp ]]; then echo "found a match" else echo "No IP address returned" fi

6
如何从半随机字符串中提取/解析完整的URL?
我想让bash从随机短字符串中解析/提取完整的URL(仅URL)。 例子: bob, the address is http://www.google.com 要么 https://foo.com/category/example.html is up 要么 Error 123 occurred at http://bit.ly/~1223456677878 要么 Stats are up: https://foo1234.net/report.jpg 我尝试使用,cat foo_output | egrep -o "https?://[\w'-\.]*\s"但是似乎没有用。

2
[[.ch。]]在正则表达式中是什么意思?
替代标题:在符合POSIX的正则表达式中,“整理顺序”或“整理元素”是什么? 我在POSIX规范的9.3.5节中找到了确切的技术定义,将其作为列表中的第4个项目,但是对我来说还不是很清楚。 我用Google搜索周围的网站为例子和解释上,并提出了不完全两手空空,但绝对不开明。 我唯一要了解的是,在某些情况下,为了使长度比较和确定“最长匹配”是什么,您可以让正则表达式将多个字符当作单个字符对待(因为正则表达式贪婪且返回最长的匹配项)。 那是全部吗?我很难看到它的用途,但我怀疑我的理解还不完整。 正则表达式的“整理”实际上是什么? 以及如何[[.ch.]]在POSIX规范的例子,涉及到这个?

5
仅在第一行匹配特定模式时才如何打印文件内容?
我正在编写脚本,我想检查文件的第一行是否匹配特定的模式,然后将其打印出来。我该如何实现? 如何检查图案?有没有一种方法可以检查模式并根据输出执行某些操作。 编辑:请看一下这个问题:https : //stackoverflow.com/questions/5536018/how-to-get-match-regex-pattern-using-awk-from-file 我想要这样的东西,但是他们都没有为我工作。我基本上想检查第一行是否匹配正则表达式模式,并根据该结果打印文件行。

3
百胜正则表达式或通配符搜索?
Fedora 文档说: 5.2。进阶搜寻 如果您不知道包的名称,请使用搜索或提供选项。或者,在任何yum搜索选项中使用通配符或正则表达式来扩大搜索条件。 好吧,起初我以为这根本是错误的或过时的,因为没有正则表达式的已知语法可用于yum search,但是后来我发现了这一点:yum search [cl-*]例如。但这却做了超凡脱俗的事情。它查找名称或描述中都没有“ c”或“ l”字母的事物。(我想要的是找到所有名称与cl-.*regexp 匹配的软件包。 我还发现很少有人建议将yum结果传递给grep,这当然可以解决问题。但是,从原则上讲,我想找出方括号中的内容是做什么的。如果yum实际上可以通过regexp搜索怎么办?

3
重击的历史
Bash的“ globbing”和正则表达式为何不相同,是否有历史原因?例如,我相信Bash中的[1-2]*匹配项以1或2开头,后跟其他任何内容,而正则表达式[1-2]*仅匹配1和2的序列。我的Bash脚本和REGEX foo都非常薄弱,我经常遇到与这些差异相关的问题,这让我很好奇为什么它们不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.