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 forz
和其他好东西请参阅。感谢它提高了知识:)-您可以找到关于c\
,g
,的信息,z
和所有其他本地命令,方法是点击:info sed
。