0%

sed pattern/hold space 示例

sed 示例进阶

  • H x

H 把pattern空间追加到hold空间
x pattern空间和hold空间互换

示例

1
2
3
root@jpvps /tmp/test #seq 1 | sed -n 'H;x;p'

1

解读: -n 排除默认输出的干扰; p打印pattern

1
2
input | pattern |  hold | command | pattern | hold  | command | pattern | hold
1 | 1 | 空行 | H | 1 | 空行1 | x | 空行1 | 1
  • G

G 把hold空间追加到pattern空间

示例: 渲染问题,空行用文字代替

1
2
3
root@jpvps /tmp/test #seq 1 | sed -n 'G;p'
1
空行

解读: -n 排除默认输出的干扰; p打印pattern

1
2
input | pattern |  hold | command | pattern | hold 
1 | 1 | 空行 | G | 1空行 | 空行
  • 倒序输出
    1
    2
    3
    4
    5
    6
    7
    root@jpvps /tmp/test #seq 6 | sed -n  '1!G;h;$p'
    6
    5
    4
    3
    2
    1

解读: -n 排除默认输出的干扰; $p最后一行时打印pattern

1!G 除了第1行,把hold空间追加到pattern空间
h 把pattern空间拷贝到hold空间

1
2
3
4
5
6
7
input | pattern |  hold   | command | pattern | hold | command | pattern | hold
1 | 1 | 空行 | | 1 | 空行 | h | 1 | 1
2 | 2 | 1 | G | 21 | 1 | h | 21 | 21
3 | 3 | 21 | G | 321 | 21 | h | 321 | 321
4 | 4 | 321 | G | 4321 | 321 | h | 4321 | 4321
...
...