相关疑难解决方法(0)

从Grep RegEx捕获组

我在sh(Mac OSX 10.6)中有这个小脚本来查看一系列文件.谷歌此时已停止提供帮助:

files="*.jpg"
for f in $files
    do
        echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*'
        name=$?
        echo $name
    done
Run Code Online (Sandbox Code Playgroud)

到目前为止(显然,对于你的shell大师)$name只有0,1或2,具体取决于是否grep发现文件名与提供的内容匹配.我想要的是捕获parens中的内容([a-z]+)并将其存储到变量中.

如果可能的话,我只想使用它grep.如果没有,请不要使用Python或Perl等,sed或类似的东西 - 我是shell的新手,并希望从*nix纯粹的角度来攻击它.

另外,作为一个超酷的bonu,我很好奇如何在shell中连接字符串?我捕获的组是$ name中存储的字符串"somename",我想在其末尾添加字符串".jpg",是cat $name '.jpg'吗?

如果你有时间,请解释一下发生了什么.

bash shell grep

355
推荐指数
7
解决办法
37万
查看次数

标签 统计

bash ×1

grep ×1

shell ×1