Articles of 正则expression式

grep与正则expression式:空格不匹配,除非我添加一个断言

GNU grep 2.5.4在Ubuntu 10.04的bash 4.1.5(1)上 这匹配 $ echo "this is a line" | grep 'a[[:space:]]\+line' this is a line 但是这不是 $ echo "this is a line" | grep 'a\s\+line' 但是这也匹配 $ echo "this is a line" | grep 'a\s\+\bline' this is a line 我不明白为什么#2不匹配(而#1)和#3也显示匹配。 这里有什么区别?

Sed:如何replace特定模式位于文件中后发现的string

如果我在文件中有以下列表: integer, parameter :: ni = 1024 integer, parameter :: nj = 256 integer, parameter :: nk = 16 并希望基于string'ni ='进行search,然后用例如'512'这样的新stringreplace后面的string(本例中为'1024')(我想保留空格)。 我该如何使用sed? 请注意,我想只是擦除等号后的任何内容,这是因为有时string不会是一个简单的整数,它可能是“1.D0”。 在某些情况下,可能会有评论。 所以我只是想把等号前面的东西抹掉,换成新的值。 结果将是: integer, parameter :: ni = 512 integer, parameter :: nj = 256 integer, parameter :: nk = 16

用sedreplace同等长度的文本

有没有一种方法可以用sedreplace与其他东西(例如点,零等)相等长度的图案? 喜欢这个: maci:/ san$ echo "She sells sea shells by the sea shore" | sed 's/\(sh[az]*\)/../gI' .. sells sea .. by the sea .. ( “我”需要较新版本的sed忽略大小写 ) 这很容易:以“sh”开头的单词被双点代替(..),但是我怎么能这样做: … sells sea …… by the sea ….. 任何想法? 干杯!

正则expression式在if语句中用空格匹配一个string(用引号?)

我将如何做一个正则expression式匹配,如下所示,但与(“^这个”)引号,如在现实世界中“这个”将是一个string,它可以有空格。 #!/bin/bash text="This is just a test string" if [[ "$text" =~ ^This ]]; then echo "matched" else echo "not matched" fi 我想要做类似的事情 if [[ "$text" =~ "^This is" ]]; then 但是这不符合。

使用sed来匹配模式并从行中删除到文件的末尾

我试图从pipe道input和/或文件中匹配一个模式,然后从匹配的行中移除到文件末尾。 我到处寻找,但似乎无法find一个适合我的需求的expression。 下面的expression式允许我删除到stream的开头,包括匹配的模式: sed -e '1,/Files:/d' 给出一些样本数据: Blah blah blah Foobar foo foo Files: somefiles.tar.gz 1 2 3 somefiles.tar.gz 1 2 3 —–THIS STUFF IS USELESS—– BLEH BLEH BLEH BLEH BLEH BLEH 运行上面的expression式会产生: Files: somefiles.tar.gz 1 2 3 somefiles.tar.gz 1 2 3 —–THIS STUFF IS USELESS—– BLEH BLEH BLEH BLEH BLEH BLEH 我想达到类似的效果,但方向相反。 使用从前面的expression式的输出,我想从—–THIS STUFF […]

Linux的CP与正则expression式

我想复制目录中的一些文件,重命名文件,但保留扩展名。 这是可能的一个简单的cp ,使用正则expression式? 例如 : cp ^myfile\.(.*) mydir/newname.$1 所以我可以复制保存扩展名的文件,但重命名它。 有没有办法获得匹配的元素在cp正则expression式中使用它的命令? 如果没有,我会做一个Perl脚本,我想,或者如果你有另一种方式… 谢谢

正则expression式来replace每行中最后一次出现的string

我正在使用sed -e 's/\(.*\)ABC/\1DEF/' myfile来replace文件中DEF最后一次出现的ABC 。 我想修改它来replace文件中每行的 DEF最后一次出现的ABC 。 正则expression式有可能吗? 谢谢

如何使用sed删除双空行?

我发现这个问题,并回答如何删除三重空行。 但是,我只需要相同的双空行。 IE浏览器。 所有双空白行应完全删除,但应保留单行空行。 我知道一些sed,但是提出的删除三重空白行的命令已经过去了: sed '1N;N;/^\n\n$/d;P;D'

testing正则expression式工具(Linux / Ubuntu)

我search了一个关于正则expression式testing/学习工具的问题,但是人们通常会build议使用基于Windows的解决scheme。 我find了一个用于Ubuntu的:redit。 不过,我想知道是否有更好的工具。 所以,没有进一步的道理 问:testing/领导正则expression式的最佳工具是什么? 对于Linux / Ubuntu的? 对不起,如果这是一个超级用户的问题。 谢谢

我将使用哪种GNU / Linux命令行工具来执行search和replace文件?

我将使用哪种GNU / Linux命令行工具来执行search和replace文件? search文本和replace能否以正则expression式格式指定?