草庐IT

menta-regex

全部标签

regex - 如何匹配以字符串开头的字符串(使用正则表达式)

在bash脚本中,我必须将刚好以3次开头的字符串与字符串lo进行匹配;所以lololoba好,loloba不好,lolololoba好,balololo不好。我试过这个模式:"^$str1/{$n,}"但它不起作用,我该怎么做?编辑:根据OP的评论,lololololoba现在很糟糕。 最佳答案 这应该有效:pat="^(lo){3}"s="lolololoba"[[$s=~$pat]]&&echogood||echobad编辑(根据OP评论):如果你想精确匹配3次(即lolololoba等应该是不匹配的):将pat="^(lo){

regex - 使用 sed 将制表符替换为空格

我正在尝试使用sed将制表符替换为4个空格,但它不起作用。这是我的代码:sed-i'{s/\t/\{4\}/g}'filename如有任何建议,我们将不胜感激。 最佳答案 在sed中,替换不应该是正则表达式,所以使用:sed-i.bak$'s/\t//g'filename在gnu-sed上,即使这样也行得通:sed-i.bak's/\t//g'filename 关于regex-使用sed将制表符替换为空格,我们在StackOverflow上找到一个类似的问题:

regex - Sed:如何替换在文件中找到特定模式后找到的字符串

如果我在文件中有以下列表:integer,parameter::ni=1024integer,parameter::nj=256integer,parameter::nk=16并希望根据字符串'ni='进行搜索,然后将后面的字符串(在本例中为'1024')替换为新字符串,例如'512'(我想保留空格).我该如何使用sed呢?请注意,我只想删除等号后面的任何内容,这是因为有时字符串不是简单的整数,它可能类似于“1.D0”。在某些情况下,前面可能会有评论。所以我只想删除等号前面的任何内容并替换为新值。结果是:integer,parameter::ni=512integer,paramete

regex - 如何组合用正则表达式提取的句子中的所有单词?

如果可能的话,我想结合一个linux命令,所有以大写字母开头的单词,不包括行首的单词。目标是在这些词之间创建边缘。例如:MyfriendJohnmetBeatriceandLucio.我想要的结果应该是:约翰,比阿特丽斯约翰,卢西奥比阿特丽斯,卢西奥我设法通过正则表达式获取了所有以大写字母开头的单词,不包括行首的单词。正则表达式是:*catgov.json|grep-oP"\b([A-Z][a-z']*)(\s[A-Z][a-z']*)*\b|^(\s*.*?\s).*">nodes.csv*节点设法将它们单独输入列中,即:约翰比阿特丽斯卢西奥现在的目标是创建以大写字母开头的名称之间的

regex - 如何使用 sed 删除非 ascii 字符

我想从某个文件中删除非ascii字符。我已经尝试过这么多正则表达式。sed-e's/[\d00-\d128]//g'#notworkingcat/bin/mkdir|sed-e's/[\x00-\x7F]//g'>/tmp/aa但此文件包含一些非ascii字符。[root@asssdsada~]$hexdump/tmp/aa|more0001020304050607-08090A0B0C0D0E0F0123456789ABCDEF00000000454C46B0F07338C0-C0BCBCFFFF616161ELF..s8......aaa00000010A0A050E5746450

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或其