Perl:将子字符串提取到文件末尾

时间:2013-11-19 21:19:10

标签: regex perl substring

我想在某个给定单词和文件末尾之间提取一个子字符串,但我没有太多运气。

这就是我的文件

non important line a
non important line b
...
...
...
non important line n
keyword
a,b,c,d
e,f,g,h
i,j,k,l

我想从关键字匹配到文件末尾:

keyword
a,b,c,d
e,f,g,h
i,j,k,l

我试过这个只用foo替换关键字,而不是从关键字到文件末尾的所有内容:

cat foo | perl -pi -e 's/keyword.*\Z/foo/g'

谢谢!

2 个答案:

答案 0 :(得分:4)

perl -0777 -i -pe 's/keyword.*\Z/foo/sg'

-0777一次将整个文件放入$_,否则文件将逐行显示为$_

另一方面,

/s修饰符仅告知正则表达式.也应该与\n匹配,因为我们还希望在$_上进行替换时匹配换行符

答案 1 :(得分:2)

使用s修饰符将换行视为普通字符

cat foo | perl -pi -e 's/keyword.*\Z/foo/gs'

http://perldoc.perl.org/perlre.html#Modifiers