Ed

ed 盡可能簡潔地列印接下來的 n 行

  • November 10, 2018

我試圖ed更好地理解 DSL,因為它的版本出現在其他工具中(例如sedvim)。

使用whereed可以列印接下來的 4 行,其中是從目前行開始並向下延伸 4 行的顯式範圍。.,+4n``.,+4

但是,在目前行周圍列印幾行以作為上下文似乎很重要,值得一些語法糖。

是否已經有相對於目前行的行範圍的縮寫ed

例如,在下面的成績單中.,+4n似乎相當長。

$ touch ~/foo
$ ed '-p* ' ~/foo
0
* 0a
1
2
3
4
5
6
7
8
9
10
11
.
* 5
5
* .,+4n
5   5
6   6
7   7
8   8
9   9

-4,+4n將列印前四行、目前行和後四行(編號)。

編寫相同內容的另一種方法是-4z8n. 這將應用z命令,這與p它首先移動到定址行(此處-4)然後顯示該行和(此處)8更多行不同。使n行編號。真正的區別在於,如果您zn 再次輸入命令(現在沒有數字),它將顯示接下來的八行(或您在初始z命令後輸入的任何數字)。

這兩個命令都會更改被視為“目前行”的內容,並且您必須手動向後移動-4,或者在移動之前設置標記(使案例如ka),然後返回到該標記(使案例如'a)。不幸的是,ed編輯器不接受一次性給出多個命令……

請注意,該z命令不是標準ed命令,但 GNUededBSD 系統都支持。

使用ex,該命令.z.5將顯示目前緩衝區的五行,目前行在中間。在這裡,您也可以將游標向下移動到最後顯示的行。

引用自:https://unix.stackexchange.com/questions/480996