我想将包含关键字的行更改为空白
这就是我最初的想法
sed -i "/.*$keyword.*/c\ " file;
但这实际上用空格替换了行因此当我搜索空白行时"^$"
不起作用
我能做些什么呢?
我想将包含关键字的行更改为空白
这就是我最初的想法
sed -i "/.*$keyword.*/c\ " file;
但这实际上用空格替换了行因此当我搜索空白行时"^$"
不起作用
我能做些什么呢?
使用 sed,您可以通过其编号或内容来寻址一行:
'/keyword/s/.*//'
意思是:
c\
命令我还没有使用c\
语法......为了正确回答这个问题,我试过这个:
seq 1 5 | sed '/3/c\'| hd
00000000 31 0a 32 0a 34 0a 35 0a |1.2.4.5.|
00000008
这没有给出预期的结果。
seq 1 5 | sed '/3/c\ '| hd
00000000 31 0a 32 0a 20 0a 34 0a 35 0a |1.2. .4.5.|
0000000a
反映这个问题的意思,
seq 1 5 | sed -e '/3/c\\n'| hd
00000000 31 0a 32 0a 0a 0a 34 0a 35 0a |1.2...4.5.|
0000000a
不要给出出席的结果,最后
seq 1 5 | sed '/3/c\\'| hd
00000000 31 0a 32 0a 0a 34 0a 35 0a |1.2..4.5.|
0000000a
似乎是这个问题的正确答案:您必须在命令中添加一个前导反斜杠才能产生一个空行。c\
sed -e '/keyword/c\\'
我的第一个想法是使用emtpy字符串替换所有内容
sed -e '/keyword/s/.*//'
问题建议使用c\
命令:
sed -e '/keyword/c\\'
@Kalanidhi 建议使用保持缓冲区,如果它们是空的,它可以工作,但是通过使用g
而不是G
命令,
来自
info sed
:`g' 将模式空间的内容替换为保持空间的内容
`G' 在模式空间的内容中添加一个换行符,然后将保持空间的内容附加到模式空间的内容中。
所以使用这个想法的命令可能是:
sed -e '/keyword/g'
但我认为重新阅读页面,@potong (+1)info sed
建议使用更合适的命令,使用命令z
来自
info sed
:`z' 这个命令清空模式空间的内容
sed -e '/keyword/z'
这可能对您有用(GNU sed):
sed -i "/$pattern/z" file