Ed
ed 盡可能簡潔地列印接下來的 n 行
我試圖
ed
更好地理解 DSL,因為它的版本出現在其他工具中(例如sed
,vim
)。使用where
ed
可以列印接下來的 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
命令,但 GNUed
和ed
BSD 系統都支持。使用
ex
,該命令.z.5
將顯示目前緩衝區的五行,目前行在中間。在這裡,您也可以將游標向下移動到最後顯示的行。