草庐IT

regex-compat

全部标签

regex - 如何从 Linux 终端使用正则表达式删除文件夹

假设我有文件夹:img1/img2/如何从Linux终端使用正则表达式删除那些匹配以img开头的所有内容的文件夹? 最佳答案 使用find过滤目录$find.-typed-name"img*"-execrm-rf{}\;正如评论中提到的,这是使用shellglob而不是正则表达式。如果你想要正则表达式$find.-typed-regex"\./img.*"-execrm-rf{}\; 关于regex-如何从Linux终端使用正则表达式删除文件夹,我们在StackOverflow上找到一个

regex - 在 bash 中声明一个 awk 函数

我有一个awk脚本被调用:awk-fmyawkfile.awkarguments使用上述相同的调用将awk脚本调用到我的bash脚本中。我可以不调用awk脚本,而是在我的bash中将其声明为函数吗脚本。我认为在前后写一个awk会很容易勾选整个代码,然后指定一个函数名称以随意调用它。不知何故,它并没有起到作用。我尝试这样做是因为我不希望我的脚本依赖于另一个脚本。而且我不是编写awk脚本的人。它需要一个文件作为输入,做一些东西并返回我的脚本中使用的修改后的文件。 最佳答案 使用heredocnotation可以这样写#!/bin/bas

regex - 为什么 "script"命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换将它们删除?

在linux上,使用bashshell,当我使用script命令时,生成的文件称为typescript。当我用vim打开该文件时,每一行都包含^M字符,并且有几行(由于我的彩色命令提示符)包含一个字符^[。我想用任何东西替换这些字符,有效地将它们从生成的脚本中删除。首先,我尝试了:%s/^[//gc,:%s/\^[//gc,:%s/\^\[//gc,以及其他一些变体。它们都不匹配^[字符,因此搜索/替换不起作用。我还为^M字符尝试了所有这些变体,结果相同。经过一番谷歌搜索后,我发现^M字符实际上是回车符“\r”。然后我尝试了:%s/\\r//gc并且这对^M字符有效!我在谷歌上搜索了更

regex - 在 Linux 中,如何复制所有不以给定字符串开头的文件?

我尝试使用以下命令:cpsrc_folder/[!String]*dest_folder但是,此命令将复制所有不以任何字符“S”、“t”、“r”、“i”、“n”、“g”开头的文件,而不是复制以任何字符开头的文件不要以“String”开头。 最佳答案 Konrad答案的变体,使用cp选项-t指定目标目录简化了最后一个命令。它创建一个cp进程来复制所有文件。lssrc_folder|grep-v'^String'|xargscp-tdest_folder列出src_folder中的所有文件过滤掉所有以String开头的字符串将所有剩余文

regex - 使用 sed 替换等长文本

有没有一种方法可以使用sed将模式替换为等长的其他内容(例如点、零等)?像这样:maci:/san$echo"Shesellsseashellsbytheseashore"|sed's/\(sh[a-z]*\)/../gI'..sellssea..bythesea..(“我”需要更新版本的sed来忽略大小写)这很简单:以“sh”开头的单词被双点(..)代替,但我如何制作它是这样的:...sellssea......bythesea.....有什么想法吗?干杯! 最佳答案 我怀疑你不能在标准的sed中做到这一点,但你可以用Perl或其

regex - 使用 sed 和正则表达式捕获 url 的最后一部分

我试图让sed匹配url的最后一部分并输出它。例如:回显“http://randomurl/suburl/file.mp3”|sed(表达式)应该给出输出:file.mp3到目前为止,我已经尝试过sed's|\([^/]+mp3\)$|\1|g'但它只输出整个url。也许这里有一些我没有看到的东西,但无论如何,我们将不胜感激! 最佳答案 这个有效:echo"http://randomurl/suburl/file.mp3"|sed's#.*/##' 关于regex-使用sed和正则表达式

regex - Perl 使用哪种 POSIX 风格的正则表达式?

具体来说,我正在使用Linux命令:$find.-regextypeposix-extended-regex''...我只想确保我使用的POSIX类型是Perl使用的类型,因为这是迄今为止我最熟悉的类型。 最佳答案 Perl已经为正则表达式定义了自己的标准。例如,有类似PCRE的系统。,代表Perl兼容正则表达式。 关于regex-Perl使用哪种POSIX风格的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stacko

regex - Bash 脚本和正则表达式问题

假设在我的服务器上,我有以下文件:foo@bar:/var/log/foo$lsfooFile1fooFile2logFilelogFile.1logFile.2我想创建一个包含除logFile.*之外的所有文件的存档。所以我想出了命令:foo@bar:~$tar-czffoo.tar.gz/var/log/foo/!(logFile.*)而且效果很好!但是,当尝试创建执行相同工作的脚本时:#!/bin/bashtar-czffoo.tar.gz/var/log/foo/!(logFile.*)我遇到了以下错误:./test.sh:line3:syntaxerrornearunexpe

c++ - Gcc 编译 Boost::regex 存在多个版本的 boost 时 undefined reference

我试图在linux机器上安装Boost(CentOs,Linux版本2.6.9-67.ELsmp)。我遵循了关于BoostGettingStarted的说明网页。下载并提取文件,然后添加前缀,因为我不是root用户。./bootstrap.sh--prefix=/my_path/boost-1.49.0./b2install我转到/my_path/boost-1.49.0并检查那里有/include/boost/和/lib/包含文件。我还将LD_LIBRARY_PATH设置为/my_path/boost-1.49.0/lib/。为了测试我是否安装成功,我编译了下面的代码:主要.cpp#

regex - 列出所有不以数字开头的文件

我想检查我的/proc中存在的所有关键文件。但是/proc里面有无数个目录对应着正在运行的进程。我不想列出这些目录。所有这些目录的名称都只包含数字。由于我的正则表达式很差,谁能告诉我什么是regex我需要发送到ls以使其NOT来搜索文件/名称中有数字的目录?更新:感谢所有回复!但我希望有一个单独的ls解决方案,而不是ls+grep解决方案。迄今为止提供的单独的ls解决方案似乎不起作用! 最佳答案 你不需要grep,只需要ls:ls-ad/proc/[^0-9]*如果你想搜索整个子目录结构使用查找:find/proc/-typef-r