[英]Convert vim replace to sed / awk in Bash
我想添加一個;
在數據末尾的每個負值之前,如下所示:
29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;;;;;;;;;;20,00;VAL
29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;012345678;012345678901;FW02ZZZ46847351235;;;;;;;-1,13;;VAL
我在vim
試用版:
:%s/-\d\{0,5}\,\d\{0,2}/;&\1/g
不幸的是,我不能用sed
來稱呼它:
sed -E 's/-\d\{0,5}\,\d\{0,2}/;&\1/g'
我收到錯誤消息:
sed: 1: "s/-\d\{0,5}\,\d\{0,2}/; ...": \1 not defined in the RE
如何轉換此格式,以便可以從命令行/使用sed
進行調用?
謝謝!
您可以使用
sed -E 's/-\d{0,5}(,\d{1,2})?/;&/g'
細節
-
連字符 \\d{0,5}
-0到5位數字- (,\\d{1,2})?
-匹配1個或0個事件的可選捕獲組
,
-逗號 \\d{1,2}
-1或2位數字。 替換模式中的&
代表整個匹配值。
參見在線sed演示 :
s="29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;;;;;;;;;;20,00;VAL
29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;012345678;012345678901;FW02ZZZ46847351235;;;;;;;-1,13;;VAL"
sed -E 's/-\d{0,5}(,\d{1,2})?/;&/g' <<< "$s"
輸出:
29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;;;;;;;;;;20,00;VAL
29.01.2019;29.01.2019;KIND;NAME;ITEM;ITEMNUMBER;ITEMORDER;012345678;012345678901;FW02ZZZ46847351235;;;;;;;;-1,13;;VAL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.