我知道这是一个非常简单的问题,经过多次讨论,但我无法理解我的命令在哪里做错了。
我想将以“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
但它没有用。
答案 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/'