标签: regular-expression

为什么我需要转义 sed 中的正则表达式字符才能解释为正则表达式字符?

例如
cat sed_data.txt | sed 's/\b[0-9]\{3\}\b/NUMBER/g'
,我必须转义字符以形成正则表达式。在这种情况下,我不得不转义大括号,以便多次解释。
为什么?我期待除非转义,否则一切都是正则表达式。即相反。

sed quoting regular-expression

12
推荐指数
2
解决办法
3837
查看次数

使用与 GNU grep -P 兼容的 perl 正则表达式

我在(?<=\[')[^,]*包含以下行的文件上使用此正则表达式disk = ['OVS/sdasd/asdasd/asdasd/something.img, w']

我想让它回来 OVS/sdasd/asdasd/asdasd/something.img

我如何使用grep才能使其工作?

我试过,grep -P "(?<=\[')[^,]*"但它返回整行。

grep regular-expression

12
推荐指数
2
解决办法
4万
查看次数

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
Run Code Online (Sandbox Code Playgroud)

我尝试过该正则表达式的每个地方,它都有效。但是在 bash 脚本中,它只输出$groups, 后跟No match. 那么有人可以告诉我它有什么问题吗?

scripting bash regular-expression bash-script

12
推荐指数
1
解决办法
3万
查看次数

正则表达式会在特定字符串之后 grep 数字

所以我有一条线:

ID: 54376
Run Code Online (Sandbox Code Playgroud)

你能帮我做一个只返回没有“ID:”的数字的正则表达式吗?

注意:此字符串位于文件中。

text-processing regular-expression

12
推荐指数
3
解决办法
5万
查看次数

Bash 通配历史

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

shell history regular-expression wildcards

12
推荐指数
2
解决办法
1365
查看次数

/bin/dash: 检查 $1 是否为数字

检查 $1 是否为 /bin/dash 整数的最佳方法是什么?

在 bash 中,我可以这样做:

[[ $1 =~ ^([0-9]+)$ ]]
Run Code Online (Sandbox Code Playgroud)

但这似乎不符合 POSIX 标准,而且 dash 不支持

shell dash string regular-expression

12
推荐指数
2
解决办法
3079
查看次数

如何在不再次调用 sed 或 awk 的情况下从字符串中删除点字符?

我有一个名为的文件hostlist.txt,其中包含这样的文本:

host1.mydomain.com
host2.mydomain.com
anotherhost
www.mydomain.com
login.mydomain.com
somehost
host3.mydomain.com
Run Code Online (Sandbox Code Playgroud)

我有以下小脚本:

#!/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
Run Code Online (Sandbox Code Playgroud)

输出到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
Run Code Online (Sandbox Code Playgroud)

我的问题是如何.调用sedgawk再次调用的情况下删除逗号之前的那个?我可以在现有的sedgawk将删除点的调用中执行的步骤吗?

hostlist.txt 将包含 1000 台主机,因此我希望我的脚本快速高效。

sed awk string shell-script regular-expression

12
推荐指数
3
解决办法
4521
查看次数

sed 或 perl 中 vim 的 \zs 是否有等价物?

在 vim 中,我们可以使用\zs原子来表示“真正从这里开始比赛”:

:%s/funnyword\zs.*$/otherword/
Run Code Online (Sandbox Code Playgroud)

sed 甚至 perl 是否有等价物?

vim sed perl regular-expression

12
推荐指数
1
解决办法
933
查看次数

整理符号和等价类的用途是什么?

来自 grep 的手册,关于它使用的扩展正则表达式

‘[.’ represents the open collating symbol.
‘.]’ represents the close collating symbol.
‘[=’ represents the open equivalence class.
‘=]’ represents the close equivalence class.
Run Code Online (Sandbox Code Playgroud)

整理符号和等价类的用途是什么?

它们是如何使用的?

谢谢。

grep regular-expression locale

12
推荐指数
1
解决办法
1371
查看次数

如何使用字符的 unicode 值 grep 字符?

我有一个 Unicode 字符 ?,由它的 Unicode 代码点 16A0 表示,在一个文本文件中(文本文件被编码(?)为 utf-8)。

当我这样做时,grep '\u16A0' test.txt我没有结果。我如何 grep 那个字符?

grep regular-expression unicode

12
推荐指数
2
解决办法
5306
查看次数