我想替换文件的第二行,我知道$use用于最后一行,但不知道怎么说最后一行.
parallel ( { ignore(FAILURE) { build( "Build2Test",BUILDFILE: "",WARFILE: "http://maven.example.com/130602.0.war",STUDY: "UK",BUG: "33323" ) }},)
解决方法
以下内容应该有效(请注意,在某些系统上,您可能需要删除所有注释):
sed '1 { # if this is the first line h # copy to hold space d # delete pattern space and return to start } /^}},$/ { # if this line matches regex /^}},$/ x # exchange pattern and hold space b # print pattern space and return to start } H # append line to hold space ${ # if this is the last line x # exchange pattern and hold space s/^}},/}}/ # replace "}}," at start of pattern space with "}}" b # print pattern space and return to start } d # delete pattern space and return to start'
或者紧凑版:
sed '1{h;d};/^}},$/{x;b};H;${x;s/^}},/}}/;b};d'
例:
$echo 'parallel ( { ignore(FAILURE) { build( "Build2Test",)' | sed '1{h;d};/^}},/}}/;b};d' parallel ( { ignore(FAILURE) { build( "Build2Test",BUG: "33323" ) }} )