我有一个名为" a6s"的文本文件。像这样的多行:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>this is a paragraph creted to demonstrate highlighting selected text</p>
<script>
$(document).ready(function(){
$("p").on("mouseup",function() {
oldtxt = chosenText();
var newtxt = '<span style="color:red;">' + oldtxt +'</span>';
$(this).html($(this).html().replace(oldtxt,newtxt));
});
//Grab selected text
function chosenText(){
if(window.getSelection){
return window.getSelection().toString();
}
else if(document.getSelection){
return document.getSelection();
}
else if(document.selection){
return document.selection.createRange().text;
}
}
});
</script>
我用过这个脚本:
y
n
yyy
n
y
yyy
yy
y
yyy
n
我想插入两个&#34; y&#34;最后一行结尾的chars和输出的下一行的开头:
$ sed -i "s/y$^y/ya\ny/g" a6s;
答案 0 :(得分:2)
使用GNU sed
(这个出色的解决方案完全归功于@Sundeep,谢谢):
sed
要使用N
处理多行,您必须使用P
,D
和{cmds}
命令:
/y$/ {cmds}
:命令组y
:仅当行以N
s/regex/replacement/
:读取模式空间的下一行g
:替换,不需要P
标志\n
:将模式空间打印到第一个D
字符(第一行)\n
:删除第一个sed -i ':a; N; s/y\ny/ya\ny/; {P; D}; ba' a6s
字符我使用不必要标签的原始解决方案:
{{1}}
我建议您查看有关使用多行的精彩grymoire.com教程。
答案 1 :(得分:1)
sed用于单个行上的简单替换,即全部。当你试图用它做任何其他事情时,你使用的是在20世纪80年代中期发明awk时变得多余的奥术符文。使用GNU awk进行多字符RS:
$ awk -v RS='^$' -v ORS= '{while(sub(/y\ny/,"ya\ny"));} 1' file
y
n
yyy
n
ya
yyya
yya
ya
yyy
n
以上简单地说明了这一点 - 循环输入用y\ny
替换每个ya\ny
,同时有y\ny
替换。
答案 2 :(得分:0)
将输入文件转换为行不是一个简单的解决方案:您需要对文件进行两次处理:
root: {
display: 'flex',
flex-direction: column;
},