我想在某个给定单词和文件末尾之间提取一个子字符串,但我没有太多运气。
这就是我的文件
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'
谢谢!
答案 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'