Text-Processing
在文件中第一次和第二次出現模式之間用另一個模式替換模式
希望在第一次出現 y 到第二次出現 y 之間將逗號 (,) 替換為字母 u。下面給出了範例輸入文件。
100y00893225900,008932259,06,2013,NOKIA Q PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y 56734_199_0.pdf 100y00893225900,008932259,06,2013,SAMSUNG T PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y 56734_199_0.pdf 100y00893225900,008932259,06,2013,APPLE S PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y 56734_199_0.pdf ~ ~ ~
實際上,每行都有 3 個“y”出現。
期望的輸出:
100y00893225900u008932259u06u2013uNOKIA Q PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y 56734_199_0.pdf 100y00893225900u008932259u06u2013uSAMSUNG T PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y 56734_199_0.pdf 100y00893225900u008932259u06u2013uAPPLE S PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y 56734_199_0.pdf ~ ~ ~
awk -Fy -v OFS=y '{gsub(",","u",$2); print}' file
這是一個 Perl 的,只是稍長一點:
perl -Fy -ane 'do{$F[1]=~s/,/u/g; $,="y";} if /y/; print @F;' file