1
我在查找sed
選項時遇到問題,以便在字符串匹配後替換字符的後兩個出現。基本上,在這些CSV文件中,我試圖替換jobcd
匹配後的前2個直接管道|
個字符,因爲它應該是一個字段。使用sed替換後面兩次出現的管道字符
我能夠運行這個,我才意識到這個更換每一個|
字符... sed -i 's/|/%/g' data.csv
下面是來自這些CSV文件樣本行:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL| Cnt:60|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
我試圖讓該行看起來像:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL% Cnt:60%||1900-01-01 00:00:00|0|||0||||0|0|0|.000
編輯:的%
相反,我試圖用取代所以我試圖讓輸出看起來像:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL\| Cnt:60\|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
謝謝,我才意識到,我應該使用'\替換字符串|'的',而不是%'。我嘗試過'sed -i -E'/(\ | jobcd)([^ |] *)\ |([^ |] *)\ |/\ 1 \ 2 \ | \ 3 \ |/g'那沒用。什麼纔是正確的語法? – simplycoding
你需要通過使用'sed -E's /(\ | jobcd)([^ |] *)\ |([^ |] *)\ |/\ 1 \ 2 \\ | \ 3 \\ |/g'<<<「$ s」' – anubhava
這是否工作正常? – anubhava