awk實現替換字符串中指定位置之間的內容


# 顯示第xx行的第yy列的一個字符
sed -n 'xx,xxp' file | awk '{print substr($0,yy,1);}'

# 修改第xx行的第yy列的一個字符Chr,並保存為新文件
awk -F "" 'BEGIN { OFS="" }{if(NR == xx) for(i=yy;i<=yy;i++) {$i="Chr";} print }' file > newfile

 

 

file內容:
123abc456aababc789abcqweabcrtyabc

替換第9個字符到第19個字符之間的abc為xyz:

awk -F "" 'BEGIN { OFS="" } {for(i=9;i<=19;i++) if($i=="a" && $(i+1)=="b" && $(i+2)=="c"){$i="x";$(i+1)="y";$(i+2)="z"}print }' file

首先通過設定FS,將每個字符看成一個域然后通過for循環進行遍歷,經過判斷找出abc這樣連續的三個字符后進行重新賦值,最后輸出,記住,如果用sub、gsub替換,請分析好替換的內容.

 

REF:

http://blog.chinaunix.net/uid-25696473-id-3246669.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM