gpt4 book ai didi

regex - 使用 Grep 匹配文件名

转载 作者:行者123 更新时间:2023-12-04 06:10:50 26 4
gpt4 key购买 nike

首要问题:
所以我有一个文件名,它的形式为
约翰史密斯14_120325_A10_6.raw
我想使用正则表达式匹配它。我在构建一个工作示例时遇到了一些问题,但不幸的是,除非我掌握了基础知识,否则我的问题将无法解决。

所以我最近刚刚了解了管道,我学到的一件很酷的事情是我可以做以下事情。

X=ll_paprika.sc (don't ask)
VAR=`echo $X | cut -p -f 1`
echo $VAR

这给了我 paprika.sc
现在,当我尝试在 grep 中执行管道想法时,没有任何 react 。
x=ll_paprika.sc
VAR=`echo $X | grep *.sc`
echo $VAR

谁能解释我做错了什么?

第二个问题:
如何使用正则表达式匹配单个下划线?

这就是我最终想要做的事情;
VAR=`echo $X | grep -e "^[a-bA-Z][a-bA-Z0-9]*(_){1}[0-9]*(_){1}[a-bA-Z0-9]*(_){1}[0-9](\.){1}(raw)"

所以我这里模式的基本思想是文件名必须以字母开头
然后它可以有任意数量的字母和数字,它必须有一个 _ 分隔一系列数字,另一个 _ 分隔下一组数字和字符,另一个 _ 分隔下一组数字,然后它必须有一个时期跟随原始。这看起来非常错误和丑陋(因为我不确定语法)。那么如何匹配文件扩展名呢?有人可以为 ll_parpika.sc 举一个简单的例子,这样我就可以弄清楚如何做我自己的正则表达式吗?

谢谢。

最佳答案

x=ll_paprika.sc
VAR=`echo $X | grep *.sc`
echo $VAR

这不是你想要的原因是 grep 匹配一行并返回它。 *.sc实际上匹配 11_paprika.sc ,所以它返回整行并将其粘贴在 $VAR 中.

如果你只想得到它的一部分, cut行可能更好。有一个 grep -o选项只返回匹配的部分,但为此你基本上必须输入你正在寻找的东西,在这一点上何必呢?

the file name must start with a letter



`grep -e "^[a-zA-Z]

and then it can have any number of letters and numbers following it



[a-zA-Z0-9]*

and it must have an _ delimit a series of numbers and another _ to delimit the next set of numbers and characters and another _ to delimit the next set of numbers



(_[0-9]+){3}

and then it must have a single period following by raw.



。生的”

关于regex - 使用 Grep 匹配文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com