在单个命令中删除 ed 中的特定行号

在单个命令中删除 ed 中的特定行号

可以ed通过键入行号的地址并后跟命令来删除行号delete,如 中所示1d。要删除一系列行,可以使用逗号,如1,4d。还可以删除具有特定内容的行,如 中g/Ted/d。有没有办法指定删除非连续行在单个命令中?也就是说,假设我想一次性删除第 1 行、第 3 行和第 8 行,而无需输入:

1d
3d
8d

答案1

不是ed(一位 60 年代的编辑),不是。但是ex(如果您准备好进入 70 年代或更高版本),或者更确切地说(90 年代)vim的实施,您可以这样做:ex

g/\v%1l|%3l|%8l/d

在哪里\%nl(简化为with )是一个正则表达式运算符,它匹配当前行所在的位置%nl\vnth .

请注意,使用按顺序运行1d, 3d,的方法,原来的第三行现在是第二行,因此您最终会删除第 1、第 4和第 10。如果你从末尾开始,就不会有这个问题:, , 。8d1d8d3d1d

相关内容