簡體   English   中英

sed,awk正則表達式替換字符串

[英]sed, awk regex to replace a string

我正在像這樣的CSV文件

"EF", "12345", "Test, String", "Xyz" ,我需要將輸出

"EF", "12345", "Test$$$ String", "Xyz"

基本上我需要用$$替換逗號

您可以為此使用gnu-awk:

awk 'BEGIN{OFS=", "; FPAT="\"[^\"]+\""} {sub(/,/, "$$$", $3)} 1' file
"EF", "12345", "Test$$$ String", "Xyz"

您可以嘗試如下操作:

, ([^"])

並替換為:

$$$ $1

正則表達式住在這里。


甚至這個:

([^"]),

並替換為:

$1$$$

正則表達式住在這里。

sed ':a
     s/^\(\([[:blank:]]*"[^"]*",\)*[[:blank:]]*"[^",]*\),/\1\$\$\$/
     t a
     ' YourFile
  • posix版本
  • 使用遞歸刪除; 內部字符串以"分隔(因此不是最快的)
  • 假設在字符串中沒有轉義的" (如果是這種情況,需要適應一下)

它也可以與sub一起使用。
awk'{sub(/ Test,/,“ Test $$$”)} 1'文件
“ EF”,“ 12345”,“ Test $$$ String”,“ Xyz”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM