linux sed使用换行符删除代码块
尝试从脚本中删除整个代码块: 我可以这样做直到换行和结束}linux sed使用换行符删除代码块,linux,sed,Linux,Sed,尝试从脚本中删除整个代码块: 我可以这样做直到换行和结束} sed '/var gfjfgjk/,/appendChild(s);\n}/d' 由于@Wiktor Stribiżew link,我如何在末尾包含换行符和}: for i in $(grep -rl gfjfgjk) ; do if grep -m1 gfjfgjk $i >/dev/null 2>&1 ; then echo $i ; sed -i -e '1,6d;7s/^}//' $i ; fi; do
sed '/var gfjfgjk/,/appendChild(s);\n}/d'
由于@Wiktor Stribiżew link,我如何在末尾包含换行符和}:
for i in $(grep -rl gfjfgjk) ; do if grep -m1 gfjfgjk $i >/dev/null 2>&1 ; then echo $i ; sed -i -e '1,6d;7s/^}//' $i ; fi; done
唯一不同的是,我想确保gfjfgjk与文件的第一行匹配,以防它被注入脚本的其他地方,然后sed删除了前7行合法代码。对于
sed
,请尝试以下操作:
sed '
:l # define a label "l"
N # read next line and append to the pattern space
$!b l # goto "l" unless eof
s/var gfjfgjk.*appendChild(s);\n}//
# remove the specified block including newlines
' file
它首先把所有的线都塞进模式空间,这样我们就可以处理了
一次多行(包括换行符)
可能的问题是文件是否包含模式appendChild\n}
在多行中,sed
将由于
greedy
正则表达式的性质
或者,如果您选择perl
,也可以说:
perl -0777 -pe 's/var gfjfgjk.*?appendChild\(s\);\n}//s' file
选项告诉-0777
立即读取所有行perl
- 正则表达式
启用*?
最短匹配
- 末尾的
选项使点s
匹配换行符。否则
regex中的点与换行符不匹配perl
}/**
而不是/**
噢,哇,没关系,我现在看到了,谢谢你似乎在我的主题上。您的问题需要包含一个简洁、可文本化的文本示例输入和预期输出,以便我们可以帮助您。没有链接,没有图片,只有文本来说明你的问题,我们可以测试潜在的解决方案。不要这样做,不管你想做什么,都有更好的方法。