如果使用sed将其中一部分匹配,则用数字替换一行

时间:2015-07-14 08:17:07

标签: linux shell sed

我知道这是一个非常简单的问题,经过多次讨论,但我无法理解我的命令在哪里做错了。

我想将以“It”开头的行替换为99999.每行以几个空格开头。

infile.txt
     3
     2
     3
     4
  It is not a number = /home/kayan/data
     3
     5
  It is not a number = /home/kayan/data
     4
     5

我用过

sed -i 's/^I/99999/g' infile.txt

但它没有用。

3 个答案:

答案 0 :(得分:3)

由于起始空间,请将其添加到模式搜索

sed -i 's/^[[:blank:]]*I.*/99999/' infile.txt

使用更改功能

sed -i '/^[[:blank:]]*I/ c\
9999' infile.txt

保持起始空间

sed -i 's/^\([[:blank:]]*\)I.*/\199999/' infile.txt

不需要g,每行只有1次更改

答案 1 :(得分:2)

你要替换的是^I部分,即第一个字母。使用^I.*来匹配整个剩余的行,它也会被替换。

答案 2 :(得分:2)

尝试一下:

sed -i 's/^\s*It.*/9999/'
相关问题