我想编辑一个文件。我想搜索一个字符串并删除包含该字符串的行和它之前的 19 行。
我在另一个站点上发现了一个类似的问题(话题现已关闭),给出的答案是使用以下 ed 命令(第一个命令是删除 PATTERN 之前的 X 行,第二个命令是删除 PATTERN 之后的 X 行) ;
ed -s file <<< $'g/PATTERN/-X,.d\n,p'
ed -s file <<< $'g/PATTERN/.,+Xd\d,p'
我已经尝试了第一个命令并且它有效,但我不明白第一个和第二个命令中的 \n 和 \d 的含义。我认为 \n 可能是“下一行”,但是如果您要打印 (,P) 所有行,为什么这是必要的?