我在文本文件(input.txt)中有以下内容:
/dsdjf48 84f3jh0-=-=-+F_+_m a=
^^^^^^^^^
Random Words
vvvvvvvvv
fkls;[]saf\as-1f-d=fd-s=dsf=-s
Hello, now I will start typing a sentence.
我需要在使用perl正则表达式“Hello,now now will”之前删除所有内容,我相信支持这一点。 这是我使用的命令:
perl -p -e "s/search-term/replace-term/" input.txt
当我执行任何正则表达式搜索时,它会在每行搜索一行。是否有启用多行搜索的标志?
答案 0 :(得分:2)
这应该这样做,在这里使用二进制..
作为flip-flop
运算符。
perl -pe '$_ = "" unless /^Hello, now/ .. 1' input.txt
使用-i
(内联选项)保存输入文件本身的更改。
perl -pi -e '$_ = "" unless /^Hello, now/ .. 1' input.txt
在这种情况下也可以使用=!!
。
perl -pi -e '$_ x=!! (/^Hello, now/ .. 1)' input.txt
答案 1 :(得分:1)
perl -n -e 'print if $_ =~ /^Hello, now I will start typing a sentence\.$/' input.txt
答案 2 :(得分:1)
您可以通过将输入记录分隔符更改为undef
,
perl -0777 -pe 's/.*? (?=Hello)//xs' input.txt
但更好的方法是逐行进行
perl -ne '$b = 1 .. /^Hello/; print if $b =~ /^$|E0$/' input.txt
答案 3 :(得分:1)
> perl -i -lne 'BEGIN{$f=0}if(/Hello/){$f=1}if($f){print}' your_file