SED如何将行更改为空白

SED如何将行更改为空白,sed,blank-line,Sed,Blank Line,我想将包含关键字的行更改为空白 这就是我最初的想法 sed -i "/.*$keyword.*/c\ " file; 但这实际上用一个空格代替了线 因此,当我搜索空白行“^ $”/代码>时,不起作用。 对此我能做些什么?:流编辑器 使用sed,您可以通过编号或内容对一行进行寻址: '/keyword/s/.*//' 意思是: 在包含关键字的行中,将所有内容替换为零 c\命令 我还没有使用c\语法。。。为了正确回答这个问题,我尝试了以下方法: seq 1 5 | sed '/3/c\'|

我想将包含关键字的行更改为空白

这就是我最初的想法

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\
命令必须添加一个前导反斜杠才能产生一个空行

其他方式 替换字符串 我的第一个想法是使用emtpy字符串替换所有内容

删除行 问题建议使用
c\
命令:

sed -e '/keyword/c\\'
使用空的保持空间 @Kalanidhi建议使用hold buffer,如果它们是空的,它可以工作,但是通过使用
g
而不是
g
命令

信息sed

`g'将模式空间的内容替换为 保留空间

`G'向模式空间的内容追加一个换行符,然后 将保留空间的内容附加到模式空间的内容

因此,使用这种想法的命令可能是:

sed -e '/keyword/g'
清空模式空间的内容 但我认为重新阅读
info sed
页面,更合适的命令是@poton(+1),通过使用
z
命令

信息sed

`z'此命令清空图案空间的内容

:流编辑器 使用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\
命令必须添加一个前导反斜杠才能产生一个空行

其他方式 替换字符串 我的第一个想法是使用emtpy字符串替换所有内容

删除行 问题建议使用
c\
命令:

sed -e '/keyword/c\\'
使用空的保持空间 @Kalanidhi建议使用hold buffer,如果它们是空的,它可以工作,但是通过使用
g
而不是
g
命令

信息sed

`g'将模式空间的内容替换为 保留空间

`G'向模式空间的内容追加一个换行符,然后 将保留空间的内容附加到模式空间的内容

因此,使用这种想法的命令可能是:

sed -e '/keyword/g'
清空模式空间的内容 但我认为重新阅读
info sed
页面,更合适的命令是@poton(+1),通过使用
z
命令

信息sed

`z'此命令清空图案空间的内容

这可能适用于您(GNU-sed):

这可能适用于您(GNU-sed):


c\
s/*/
之间不完全相同,因为
c
将新行直接发送到输出,其中
s///
清空可以打印或操作的缓冲区。在这种情况下,结果是相同的,因为简单的输出结果没有其他操作,除了循环直接到
c
(性能兴趣)@NeronLeVelu是的,这就是为什么我建议在我的aix上使用
'/keyword/c\\\'
而不是
'/keyword/c\'
,不允许使用'c\'。(我想不是posix)
c\
s/*/
之间不完全相同,因为
c
将新行直接发送到输出,其中
s///
清空可以打印或操作的缓冲区。在这种情况下,结果是相同的,因为简单的输出结果没有其他操作,除了循环直接到
c
(性能兴趣)@NeronLeVelu是的,这就是为什么我建议在我的aix上使用
'/keyword/c\\\'
而不是
'/keyword/c\'
,不允许使用'c\'。(我想不是posix)你能解释一下sed中
z
的用法吗?@Kalanidhi用于
z
和其他好东西。感谢它提高了知识:)-你可以找到关于
c\
g
的信息,
z
和所有其他本地命令,点击:
info sed
。您能解释一下
z
在sed中的用法吗?@Kalanidhi for
z
和其他好东西请参阅。感谢它提高了知识:)-您可以找到关于
c\
g
,的信息,
z
和所有其他本地命令,方法是点击:
info sed