- 论坛徽章:
- 0
|
不要想得太复杂了,其实D很简单的,你的那个
sed ':1;1,5{N;b1};7!D' 等价于
sed -n ':1;1,5{N;b1};7!D;p'
由于7行不D,不自动从头循环,所以执行了p,显示了7
你用r2007说的sedsed工具好好看看每步执行的结果就知道D没你想得那么复杂
seq 10|./sedsed -d -e ':1;1,5{N;b1};7!D'
PATT:1$
HOLD
COMM::1
COMM:1,5 {
COMM:N
PATT:1\n2$
HOLD
COMM:b 1
COMM:1,5 {
COMM:N
PATT:1\n2\n3$
HOLD
COMM:b 1
COMM:1,5 {
COMM:N
PATT:1\n2\n3\n4$
HOLD
COMM:b 1
COMM:1,5 {
COMM:N
PATT:1\n2\n3\n4\n5$
HOLD
COMM:b 1
COMM:1,5 {
COMM:N
PATT:1\n2\n3\n4\n5\n6$
HOLD
COMM:b 1
COMM:1,5 {
COMM:7 !D
PATT:2\n3\n4\n5\n6$
HOLD
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:3\n4\n5\n6$
HOLD
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:4\n5\n6$
HOLD
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:5\n6$
HOLD
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:6$
HOLD:$
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:7$
HOLD:$
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:7$
HOLD:$
7 《-----------------这里显示了7
PATT:8$
HOLD:$
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:9$
HOLD:$
COMM::1
COMM:1,5 {
COMM:7 !D
PATT:10$
HOLD:$
COMM::1
COMM:1,5 {
COMM:7 !D
不难理解
D Delete up to the first embedded newline in the pattern space.
Start next cycle, but skip reading from the input if there is
still data in the pattern space.
这句话的意思,事实确实如此 |
|