相关疑难解决方法(0)

Bash正则表达式 - 似乎无法匹配\ s,\ S等

我有一个脚本试图从gparted获取信息块.

我的数据看起来像:

Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  ext4            boot
 2      316MB   38.7GB  38.4GB  primary  ext4
 3      38.7GB  42.9GB  4228MB  primary  linux-swap(v1)

log4net.xml
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  ext4            boot
 5      316MB   38.7GB  38.4GB  primary  ext4
 6      38.7GB  42.9GB  4228MB …
Run Code Online (Sandbox Code Playgroud)

regex bash

13
推荐指数
2
解决办法
3万
查看次数

Bash正则表达式匹配不起作用 - 转义所有特殊字符

我遇到了与bash正则表达式匹配的问题.我有这样的正则表达式:

re="fatal: file not found: .+/tmp_dir_1234/([^\ ]*) \(No such file or directory\)"
test="fatal: file not found: /some/path/irrelevant/something/tmp_dir_1234/somefile.txt (No such file or directory)"
if [[ "$test" =~ "$re" ]]; then
    echo "match!"
fi
Run Code Online (Sandbox Code Playgroud)

对我来说,这里的一切看起来都很好但是出于某种原因,在调试bash脚本时我可以看到它与字符串不匹配:

+ [[ fatal: file not found: /some/path/irrelevant/something/tmp_dir_1234/somefile.txt (No such file or directory) =~ fatal: file not found: \.\+/tmp_dir_1234/\(\[\^\\ ]\*\) \\\(No such file or directory\\\) ]]
Run Code Online (Sandbox Code Playgroud)

出于某种原因,正则表达式模式被转义.

regex bash

4
推荐指数
1
解决办法
1365
查看次数

在bash正则表达式中匹配组

在bash中我有以下内容:

REGEX="(1.0.0|2.0.0)"
declare -a arr=("A:1.0.0" "B:1.0.0" "C:2.0.0" "D:2.0.1")
for i in "${arr[@]}"
do
    echo "Found: $i"
    if [[ "$i"=~"${REGEX}" ]]; then
        echo "$i matches: ${REGEX}"
    else
        echo "$i DOES NOT match: ${REGEX}"
    fi   
done
Run Code Online (Sandbox Code Playgroud)

我会假设D:2.0.1它会打印,...DOES NOT match...但它会打印出来

Found: A:1.0.0
A:1.0.0 matches: (1.0.0|2.0.0)
Found: B:1.0.0
B:1.0.0 matches: (1.0.0|2.0.0)
Found: C:2.0.0
C:2.0.0 matches: (1.0.0|2.0.0)
Found: D:2.0.1
D:2.0.1 matches: (1.0.0|2.0.0)
Run Code Online (Sandbox Code Playgroud)

那么我的REGEX组模式有什么问题?指定类似的组模式在其他语言中工作正常 - 例如像groovy.

regex bash

2
推荐指数
1
解决办法
521
查看次数

标签 统计

bash ×3

regex ×3