我只是碰到ssed
(超級sed
),可以處理Perl的正則表達式一樣來了。它應該可以在類似Debian的系統上使用,不知道其他的。
$ echo ' A-B becomes A\texthyphen B.
a-b becomes a\texthyphen b.
%-b becomes %\texthyphen b.
%-% is unchanged, because it is not near any letter.
1-2 is unchanged, because it is near numbers.
A-2 is unchanged, because it is near one number.' | \
> ssed -R 's/(?<=[A-Za-z])-(?![0-9])|(?<![0-9])-(?=[A-Za-z])/\\texthyphen /g'
給
A\texthyphen B becomes A\texthyphen B.
a\texthyphen b becomes a\texthyphen b.
%\texthyphen b becomes %\texthyphen b.
%-% is unchanged, because it is not near any letter.
1-2 is unchanged, because it is near numbers.
A-2 is unchanged, because it is near one number.