1. 程式人生 > >使用sed和awk將文件中的非雙引號中的逗號分隔符替換為豎線

使用sed和awk將文件中的非雙引號中的逗號分隔符替換為豎線

txt 豎線 $0 文件 文件中 sed和awk gin int 引號

原始文件:
$ vi 5.txt
"2018-08-13","aa,bb,cc,dd",zwfer,18,"qw,qe,r,ds,fd",888
"2018-08-13","dd,bb,cc",zwfer,18,"qw,r,ds,fd",888
"2018-08-13","aa,bb,cc,dd",zwfer,18,"qw,qe,r,ds,fd",888
"2018-08-13","aa,bb,cc",zwfer,18,"qw,fd",888
替換為
"2018-08-13"|"aa,bb,cc,dd"|zwfer|18|"qw,qe,r,ds,fd"|888
"2018-08-13"|"dd,bb,cc"|zwfer|18|"qw,r,ds,fd"|888
"2018-08-13"|"aa,bb,cc,dd"|zwfer|18|"qw,qe,r,ds,fd"|888
"2018-08-13"|"aa,bb,cc"|zwfer|18|"qw,fd"|888
雙引號中的逗號不替換
命令:
$ sed ‘s/,/|/g‘ 5.txt | awk ‘BEGIN{FS=OFS="\""} {for(i=2;i<=NF;i=i+2){$i=gensub(/|/,",","g",$i)};print $0}‘ >6.txt
$ more 6.txt
"2018-08-13"|"aa,bb,cc,dd"|zwfer|18|"qw,qe,r,ds,fd"|888
"2018-08-13"|"dd,bb,cc"|zwfer|18|"qw,r,ds,fd"|888
"2018-08-13"|"aa,bb,cc,dd"|zwfer|18|"qw,qe,r,ds,fd"|888
"2018-08-13"|"aa,bb,cc"|zwfer|18|"qw,fd"|888

使用sed和awk將文件中的非雙引號中的逗號分隔符替換為豎線