/ / Nahraďte znak znakom # (hash symble) iba v 5. a 6. poli - perl, replace, awk

Nahraďte znak znakom # (hash syble) iba v 5. a 6. poli - perl, nahradiť, awk

Snažím sa nahradiť znak znakom # (hashsymble) iba v 5. a 6. poli. napr. „Z“ musím nahradiť „#“ iba v 5. a 6. poli (pomocou skriptu perl alebo AWK). A zvyšné polia obsahujúce symbol „Z“ by nemali byť ovplyvnené.

(iba aktualizujem príspevok tak, aby nahradil dvojité úvodzovky („) namiesto Z znakom #. Môžem to dosiahnuť? vďaka za vzácnu pomoc) napr .: súbor i / p:

aa",bb,ccc,ddd,eee",ddd",fff
aa1",ba1,ccc1,"ddd1,eee"1,ddd1,fff1
z,aa2,bb2",ccc2,ddd2","eee2",ddd2,fff2"

Očakávaný O / p súbor:

aa",bb,ccc,ddd,eee#,ddd#,fff
aa1",ba1,ccc1,#ddd1,eee#1,ddd1,fff1
aa2,bb2",ccc2,ddd2#,#eee2#,ddd2,fff2"

Vďaka.

odpovede:

0 pre odpoveď č. 1

Pretože sú to iba dve políčka, slučku je možné vynechať.

awk -F, -v OFS=, "{gsub(/Z/,"#",$5);gsub(/Z/,"#",$6)} 1" file
x,aaZ,bb,ccc,ddd,eee#,dddZ,fff
y,aa1Z,ba1,ccc1,#ddd1,eee#1,ddd1,fff1
z,aa2,bb2Z,ccc2,ddd2#,#eee2,ddd2,fff2Z

Nahradiť " v piatom a šiestom poli:

awk -F, -v OFS=, "{gsub(/"/,"#",$5);gsub(/"/,"#",$6)} 1" file
aa",bb,ccc,ddd,eee#,ddd#,fff
aa1",ba1,ccc1,"ddd1,eee#1,ddd1,fff1
z,aa2,bb2",ccc2,ddd2#,#eee2#,ddd2,fff2"

1 pre odpoveď č. 2
$ awk "BEGIN{FS=OFS=","} {for (i=5;i<=6;i++) gsub(/Z/,"#",$i)} 1" file
x,aaZ,bb,ccc,ddd,eee#,dddZ,fff
y,aa1Z,ba1,ccc1,#ddd1,eee#1,ddd1,fff1
z,aa2,bb2Z,ccc2,ddd2#,#eee2,ddd2,fff2Z

0 pre odpoveď č. 3

Tu je spôsob Perlu, ako túto prácu vykonať:

perl -anF, -e "$"=","; s/Z/#/ for (@F)[4,5];print"@F";" < in1.txt

Ak máte mutiple Z v poli môžete použiť:

perl -anF, -e "$"=","; s/Z/#/g for (@F)[4,5];print"@F";" < in1.txt

Výkon:

aaZ,bb,ccc,ddd,eee#,ddd#,fff
aa1Z,ba1,ccc1,Zddd1,eee#1,ddd1,fff1
aa2,bb2Z,ccc2,ddd2Z,#eee2,ddd2,fff2Z

Upraviť podľa komentára:

in1.txt

aa",bb,ccc,ddd,eee",ddd",fff
aa1",ba1,ccc1,"ddd1,eee"1,ddd1,fff1
aa2,bb2",ccc2,ddd2","eee2,ddd2,fff2"

Command:

perl -anF"","" -e "$"=",";s/"/#/ for (@F)[4,5];print"@F";" < in1.txt

výsledok:

aa",bb,ccc,ddd,eee#,ddd#,fff
aa1",ba1,ccc1,"ddd1,eee#1,ddd1,fff1
aa2,bb2",ccc2,ddd2",#eee2,ddd2,fff2"