例如
cat sed_data.txt | sed 's/\b[0-9]\{3\}\b/NUMBER/g'
,我必须转义字符以形成正则表达式。在这种情况下,我不得不转义大括号,以便多次解释。
为什么?我期待除非转义,否则一切都是正则表达式。即相反。
我在(?<=\[')[^,]*包含以下行的文件上使用此正则表达式disk = ['OVS/sdasd/asdasd/asdasd/something.img, w']
我想让它回来 OVS/sdasd/asdasd/asdasd/something.img
我如何使用grep才能使其工作?
我试过,grep -P "(?<=\[')[^,]*"但它返回整行。
这是我第一次编写 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. 那么有人可以告诉我它有什么问题吗?
所以我有一条线:
ID: 54376
Run Code Online (Sandbox Code Playgroud)
你能帮我做一个只返回没有“ID:”的数字的正则表达式吗?
注意:此字符串位于文件中。
Bash“globbing”和正则表达式不相同是否有历史原因?例如,我相信在 Bash 中[1-2]*匹配任何以 1 或 2 开头的任何内容,然后是其他任何内容,而正则表达式[1-2]*只会匹配 1 和 2 的序列。我的 Bash 脚本和 REGEX foo 都很弱,我经常遇到与这些差异相关的问题,这让我很好奇它们为什么不同。
检查 $1 是否为 /bin/dash 整数的最佳方法是什么?
在 bash 中,我可以这样做:
[[ $1 =~ ^([0-9]+)$ ]]
Run Code Online (Sandbox Code Playgroud)
但这似乎不符合 POSIX 标准,而且 dash 不支持
我有一个名为的文件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)
我的问题是如何.在不调用sed或gawk再次调用的情况下删除逗号之前的那个?我可以在现有的sed或gawk将删除点的调用中执行的步骤吗?
hostlist.txt 将包含 1000 台主机,因此我希望我的脚本快速高效。
在 vim 中,我们可以使用\zs原子来表示“真正从这里开始比赛”:
:%s/funnyword\zs.*$/otherword/
Run Code Online (Sandbox Code Playgroud)
sed 甚至 perl 是否有等价物?
来自 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)
整理符号和等价类的用途是什么?
它们是如何使用的?
谢谢。
我有一个 Unicode 字符 ?,由它的 Unicode 代码点 16A0 表示,在一个文本文件中(文本文件被编码(?)为 utf-8)。
当我这样做时,grep '\u16A0' test.txt我没有结果。我如何 grep 那个字符?