protected void setUp() throws Exception
{
//...
}
我想为所有类中的每个方法添加@Before。我有近500个课程。如果我手动做,那将是非常艰难的。
@Before
protected void setUp() throws Exception
{
//...
}
我试过这个
sed -i "s/protected void setUp()/@Before()\nprotected void setUp()/g" File
但如果我这样做,那么对齐就会改变。
@Before()
protected void setUp() throws Exception
{
}
请帮帮我。我想进行适当的调整
答案 0 :(得分:4)
使用GNU awk,您可以使用gensub()
捕获protected void setUp()
前面的空格数,并将其打印在所需文本的前面:
$ awk '{$0=gensub(/^(\s*)(protected void setUp)/, "\\1@Before\n&", 1)}1' file
@Before
protected void setUp() throws Exception
{
//...
}
了解其工作原理:
$0=gensub()
gensub(/^(\s*)(protected void setUp)/, "\\1@Before\n&", 1)
protected void setUp
,并在开头添加一些空格并捕获它们。然后,它用那些空格+“@Before”替换它,然后是新行和原始行。1
请注意,这只会检查protected void setUp
。如果您还想在setUp
之后检查括号,请说:/^(\s*)(protected void setUp\(\))/
(需要转义括号,因为正常的括号具有捕获组的功能)。
考虑到可以通过说出\\n
,n
其序号,或&
作为完整字符串来使用捕获的群组。
使用更极端的示例文件查看它的实际操作:
$ cat a
protected void setUp() throws Exception
{
//...
}
blablablabla
protected void setUp() throws Exception
and this is
protected void setUp() throws Exception
变成:
$ awk '{$0=gensub(/^(\s*)(protected void setUp)/, "\\1@Before\n&", 1)}1' a
@Before
protected void setUp() throws Exception
{
//...
}
blablablabla
@Before
protected void setUp() throws Exception
and this is
@Before
protected void setUp() throws Exception
答案 1 :(得分:2)
sed用于单个行上的简单替换,即全部。这不是你想要做的,所以它不是sed的工作,它是awk的工作。这适用于任何awk:
$ awk '{s=$0} sub(/protected void setUp().*/,"@Before",s){print s} 1' file
@Before
protected void setUp() throws Exception
{
//...
}
借用@ fedorqui更全面的样本输入文件:
$ cat a
protected void setUp() throws Exception
{
//...
}
blablablabla
protected void setUp() throws Exception
and this is
protected void setUp() throws Exception
$ awk '{s=$0} sub(/protected void setUp().*/,"@Before",s){print s} 1' a
@Before
protected void setUp() throws Exception
{
//...
}
blablablabla
@Before
protected void setUp() throws Exception
and this is
@Before
protected void setUp() throws Exception
答案 2 :(得分:0)
我认为dob.setForceParse(false);
dob.addDomHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent event) {
dob.getTextBox().setText(**masked value**);
}
}, BlurEvent.getType());
dob.addDomHandler(new FocusHandler() {
@Override
public void onFocus(FocusEvent event) {
dob.setValue(**unmasked value**);
}
}, FocusEvent.getType());
使用这个简单的任务没有错:
sed
sed -r -i -e "s/^([ \t]*)(protected void setUp())/\1@Before()\n\1\2/g" File
参数以激活-r
,