草庐IT

regex-compat

全部标签

regex - 如何用sed删除\r字符

非常简单,我有一个在每个换行符处都有\r\n的文件。aaaa\r\nbbbb\r\ncccc我想在保留\n的同时删除\r字符。我可以在python中轻松完成此操作,但使用简单的sed命令似乎更优雅。这可能吗?什么表情可以解决问题?我似乎无法在网上找到任何此类解决方案。谢谢 最佳答案 你应该可以像这样使用sed来做到这一点:sed's/\r//g'orig.txt>modified.txt 关于regex-如何用sed删除\r字符,我们在StackOverflow上找到一个类似的问题:

regex - 如果我不知道确切的文件路径,Perl 如何检测文件?

我正在尝试搜索特定路径/位置下的文件。SamplePath-/var/log////file现在,有两个目录和如示例路径所示。这两个目录有一些随机名称,因此无法预测它们的名称。除了这两个目录名,路径的每一部分都是已知的。我试过这样做--if(-e$filePath){#Dosomethinghere}但是好像不行。那么,如何才能搜索到特定的文件呢?谢谢! 最佳答案 使用文件glob:这与shell以类似模式执行的操作相同。或者您可以使用glob功能。perldoc-fglob了解详情。

regex - Grep 在 OpenBSD 和 Linux 中的行为不同。无法使命令工作

所以基本上这个命令所做的是安全地连接到一个网络域以获取我的外部IP地址,这在LinuxDebian系统上可以完美运行,但它不能在我的OpenBSD系统上正常运行。Curl命令工作正常,但是Grep命令出了点问题,因为它没有获取curl正在通过管道传输到它的IP。-Eo不能与OpenBSD一起使用吗?我无法通过手册页来判断..USERAGENT="Mozilla/4.0"WEB_LOCATION="https://duckduckgo.com/?q=whats+my+ip"curl-s--retry3--max-time5-tlsv1.2--user-agent$USERAGENT$WE

regex - 为什么 POSIX "printable characters"类不匹配简单字符串?

我编写了以下脚本来测试“可打印字符”字符类,如here所述.#!/bin/shcase"foo"in*[:print:]*)echo"foundaprintablecharacter";;*)echo"foundnoprintablecharacters";;esac我希望这个脚本输出foundaprintablecharacter,"foo"中至少有一个(事实上,所有)字符是可打印的。相反,它输出"foundnoprintablecharacters"。为什么"foo"中的字符未被识别为可打印字符? 最佳答案 字符串[:只是一个特

regex - 使用 Regex 替换或追加文件中的行 | Linux shell 脚本

我正在尝试找到在看起来像这样的文件上执行的正确命令:(即.cshrc文件)setenvBLAHfoo我需要命令来替换它检测到字符串BLAH的行并像这样替换整行:setenvBLAHnewfoo如果文件中不存在BLAH,则将其附加到文件中。我已经尝试过这样的sed,但这并没有实现我的目标。sed's/^.*?BLAH.*/setenvBLAHnewfoo/g'text.txt>text.tmp&&mvtext.tmptext.txt我也玩过awk并且似乎也无法让命令完全按照我想要的方式工作。awk-vs="setenvBLAHnewfoo"'/^BLAH/{f=1;$0=s}7;END{

regex - 如何仅删除单个空行 - 保留多个空行

我有一些数据,我想保留多个空行并只删除单个空行。我的数据如下所示:12345678910我希望输出为:12345678910我已经尝试使用以下命令,但我似乎无法让它工作:awk'/^$/{print;}/./{printf("%s",$0);}'和sed'N;/^\n$/d;P;D'此外,我尝试使用cat-s但这不一定会删除空行。此外,我玩过sed'/^$/'但不能仅指定单行。任何帮助是极大的赞赏。 最佳答案 使用gnu-awk非常简单:awk-vRS='\n+''{printf"%s",$0(length(RT)!=2?RT:"\

regex - 在 Bash 中使用正则表达式和 x=${...} 重命名文件?

我有一堆文件,其中包含括号中的前缀代码。我想将这些前缀变成后缀,如下所示:Finance-(4BF)-001.doc-->Finance-001-4BF.docCorporate-(K04)-001.doc-->Corporate-001-K04.doc我以前写了一个非常简单的VBScript来在Windows机器上执行此操作,但现在我需要在Linux上执行此操作。经过一番繁琐的搜索后,我找不到一种简单而优雅的方法来将正则表达式应用于文件名并使用正则表达式匹配重命名它。到目前为止我有这个:#!/bin/bashforiin*.docdox=${i//[\(\)]/}echo"$iren

regex - awk/sed 在两个模式之间插入行

我有一个CNC机器的G代码文件,需要在模式之间插入两行。本质上我需要编写一个简单的后处理器。这是我的CAM程序中的一小段代码:G00X-1.663Y-0.992Z+0.G01X-1.072Y-0.992G01X-1.072Y-0.874G01X-1.663Y-0.874G01X-1.663Y-0.992G00X-3.021Y-0.992G01X-3.021Y-0.874G01X-2.43Y-0.874G01X-2.43Y-0.992G01X-3.021Y-0.992我需要按顺序在G00和G01之间插入两行。所以上面的例子现在变成了:G00X-1.663Y-0.992Z+0.M51M04

regex - 使用正则表达式搜索 127.0.0.1 以外的 IP 地址

使用命令行工具,我试图找到除127.0.0.1之外的任何IP地址并替换为新IP。我尝试使用sed:sed's/\([0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}\)\(?!127.0.0.1\)/'$ip'/g'file你能帮帮我吗? 最佳答案 由于sed不支持否定先行断言,我建议您使用Perl而不是sed。perl-pe's/\b(?:(?!127\.0\.0\.1)\d{1,3}(?:\.\d{1,3}){3})\b/'"$ip"'/g'file示例:$catfile122.54.23.121127

regex - 在具有以特定模式开头的第二行的两行之间插入行

我想在两行之间插入一行,只有当第二行匹配特定模式时例如输入文件如下:pattern(match1,line1)line2line3line4line5(beforepattern)pattern(match2,line5)line7line8line9line10(beforepattern)pattern(match3,line11)line12我想在line5和pattern之间以及line10和pattern之间插入lineToInsert我试过这个命令:sed'N;s/\n\(pattern\)/\n\lineToInsert\n\1/'我希望它能工作,但它只有在匹配的模式仅存