技巧 - 替换一次

http://blog.uouo123.com/post/704.html

文本如下, 将第一个 22 替换为 33

11
22
11
22
11
22

方法 1

匹配到 第一个 22, 然后替换成 33

sed -i '0,/22/s//33/' file
0,/22/

表示从第 0 行匹配到第一个 22 行

方法二

sed -i ':a;N;$!ba;s/22/33/' file
  1. :a 创建一个labela
  2. N 将下一行读入到模式空间
  3. $! 如果不是最后一行,ba 跳转到 label a 处
  4. s/22/33/ 替换 22 为 33,只替换一次