Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在ed中使用\n和\d的含义?_Unix_Ed - Fatal编程技术网

Unix 在ed中使用\n和\d的含义?

Unix 在ed中使用\n和\d的含义?,unix,ed,Unix,Ed,我想编辑一个文件。我想搜索一个字符串并删除包含该字符串的行和它前面的19行 我在另一个网站上发现了一个类似的问题(主题现在结束了),给出的答案是使用以下ed命令(第一个命令是在模式之前删除X行) 第二个命令删除图案后的X行) ed-s文件您可以使用一个简单的回显测试传递给“ed”的命令: $ echo $'g/PATTERN/-X,.d\n,p' g/PATTERN/-X,.d ,p 因此实际上,\n只表示第一个命令的结束,并在shell中被替换。这对ed没有任何意义,但对您的shell

我想编辑一个文件。我想搜索一个字符串并删除包含该字符串的行和它前面的19行

我在另一个网站上发现了一个类似的问题(主题现在结束了),给出的答案是使用以下ed命令(第一个命令是在模式之前删除X行) 第二个命令删除图案后的X行)


ed-s文件您可以使用一个简单的回显测试传递给“ed”的命令:

 $ echo $'g/PATTERN/-X,.d\n,p'
 g/PATTERN/-X,.d
 ,p
因此实际上,
\n
只表示第一个命令的结束,并在shell中被替换。这对
ed
没有任何意义,但对您的shell有意义

正如您所说,
g/PATTERN/-X,.d
删除从-X行到模式匹配行的当前位置的所有行

,p
显示文件中的所有行

在第二个命令中,
\d
只是一个错误。您应该将其读为
\n

 $ echo $'g/PATTERN/-X,.d\n,p'
 g/PATTERN/-X,.d
 ,p