如何用awk / sed实现这个目标?
输入:
zero
one
two
three
four
输出:
zero
one
one-one
one-two
one-three
two
three
four
注意:我需要将实际标签包含在要添加的新行中。
答案 0 :(得分:4)
使用GNU sed,您可以使用a\ 命令在匹配后附加行(或i\
在匹配前插入行。
sed '/one/a\ \tone-one\n\tone-two\n\tone-three' file
zero
one
one-one
one-two
one-three
two
three
four
答案 1 :(得分:2)
使用awk:
awk '1; /one/{print "\n\tone-one\n\tone-two\n\tone-three"}' file
zero
one
one-one
one-two
one-three
two
three
four
答案 2 :(得分:0)
标题表示第一次出现之后' (我认为occurene是一个错字)但是,其他答案似乎并不能满足这一要求,并且由于样本集的独特性,在测试时并不那么明显。
如果我们将样本集更改为
zero
one
three
one
four
five
one
six
seven
one
然后我们需要像awk '/one/ && !x {print $0; print "\tone-one\n\tone-two\n\tone-three"; x=1;next} 1'
那样产生
zero
one
one-one
one-two
one-three
two
three
one
four
five
one
six
seven
one