Ed
Ed:可以在一個字元串和另一個字元串之間進行替換嗎?
ed 編輯器上的這個命令
/string.start/;/string.end/dp
刪除了and之間的所有單詞(不是整行,這發生使用
,
代替;``string.start``string.end
string.start
是否可以在和 之間替換/替換string.end
?我試過這條線
s/string.start/;/string.end/mynewline../
還有這個
/string.start/;/string.end/s /mynewline../
但兩者都不正確。
我的目標是用命令做這樣的事情
/string.start/;/string.end/dp
文本:
This text start with string.start and other words bla bla bla bla then end with string end.
變得
This text start with
我想要這樣的東西
This text start with string.start and other words bla bla bla bla then end with string end.
變得
This text start with my substituted string.
我忘了:替代必須適用於不同的線路,因為一條線路很容易使用
s/stringstart.*.string.end/
該表達式
s/string.start/;/string.end/mynewline../
似乎不是有效的ed
表達式。GNUed
和我係統上的本機 BSD都不ed
理解它。我也無法開始/string.start/;/string.end/dp
工作。;
是一個與 相同的地址,.,$
即“從這一行到文件結尾”,我無法在命令行中間理解它。最簡單的解決方案是只使用
s/string.start.*string.end/with my substituted string/p
這確實是您想要的,即替換目前行的第一個匹配項
string.start
和最後一個匹配項string.end
(包括匹配文本)之間的文本。這類似於想要將第一個括號中的字元串替換
some.text(0) -> other.text(2)
為100
:s/([^)]*)/(100)/
也就是說,您匹配開始分隔符,然後是任何文本,然後是結束分隔符,並替換為想要的文本(在這種情況下,應該保留分隔符)。
要將替換應用到文件中的所有行,請在命令前加上
%
(或者1,$
,或者只是,
):%s/string.start.*string.end/with my substituted string/p
請注意,只會列印最後一行。
要列印所有受影響的行,請使用
g/string.start.*string.end/ s//with my substituted string/p
即,將替換分別應用於與表達式匹配的所有行。