Linux

替換特定欄位中的特殊字元

  • March 9, 2019

如何替換特定欄位中的特殊字元?

輸入

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),否則print將輸出所有以空格分隔的欄位。

從 GNU 的手冊頁awk

gsub(r, s$$ , t $$)

對於與 string 中的正則表達式匹配的每個子r字元串 t,替換 string s,並返回替換次數。

如果t未提供,請使用 $0。

&替換文本中的一個被實際匹配的文本替換。

用於\&獲取文字 &。(這必須輸入為\\&;請參閱GAWK:有效的 AWK 程式以更全面地討論 &’s 和在替換文本中的反斜杠的sub()規則gsub()gensub()

引用自:https://unix.stackexchange.com/questions/412780