假设我想将 XOrg[ ,.;] 替换为 X-Org[同时保持标点符号完整]。所以 XOrg 会给出 X-Org,而“XOrg”会给出“X-Org”等等。
有没有办法在linux终端上使用sed来做到这一点?
现在我可以做
sed -r 's/XOrg[ ,.;]/X-Org/g'
但在这里我必须选择在另一端出现哪个标点符号。我如何告诉它保留它找到的标点符号?
答案1
我刚刚在这里找到了答案:http://www.grymoire.com/Unix/Sed.html#uh-4a
要通过一系列字符(例如标点符号和空格)分隔搜索词并将这些字符保留到输出而不是被替换,您可以使用以下合成:
sed -r 's/([group1])term([group2])/\1output\2/g'
其中 ([groupx]) 可以是 ([ ,.;)(]) 或 ([[:punct:] ])。
前任。
echo dep\!|sed -r 's/dep([ ,.;)!])/dependency\1/'
将给出: dep! -> 依赖!
echo ' dep,'|sed -r 's/([[:punct:] ])dep([[:punct:] ])/\1dependency\2/'
将给出 'dep,' -> 'dependency,'