Linux
替換特定欄位中的特殊字元
如何替換特定欄位中的特殊字元?
輸入
xxxx,11/2019,xxx
輸出
xxxx,11,2019,xxx
如您所見,我只想
/
用,
in替換$2
。如何做到這一點?
awk -F, -v OFS=, '{gsub(/\//,",",$2); print}'
這使用
awk
’sgsub()
函式在欄位 2 上進行全域正則表達式搜尋和替換。如果您只想替換
/
$2 中第一次出現的 ,請使用sub()
而不是gsub()
.注意:預設輸出欄位分隔符
OFS
是空格。您需要將其設置為,
(與輸入欄位分隔符相同FS
),否則從 GNU 的手冊頁
awk
:gsub(r, s$$ , t $$)
對於與 string 中的正則表達式匹配的每個子
r
字元串t
,替換 strings
,並返回替換次數。如果
t
未提供,請使用 $0。
&
替換文本中的一個被實際匹配的文本替換。用於
\&
獲取文字 &。(這必須輸入為\\&
;請參閱GAWK:有效的 AWK 程式以更全面地討論 &’s 和在替換文本中的反斜杠的sub()
規則gsub()
。gensub()
)