shell 替換字符串的幾種方法,變量替換${},sed,awk


變量a是一個帶空格的字符串,現在用"hdpusr400"替換變量a中的"hduser302":

 1 [liusiyi@localhost ~]$ echo $a
 2 -rw-r----- 3 hduser302 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 3 
 4 #用變量替換${a//}做字符串替換
 5 [liusiyi@localhost ~]$ echo ${a/hduser302/hdpusr400}   #變量a中的第一個匹配的字符串會被替換
 6 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 7 [liusiyi@localhost ~]$ echo ${a//hduser302/hdpusr400}  #變量a中所有匹配的字符串都會被替換
 8 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 9 
10 #用sed做字符串替換
11 [liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/'   #sed 's///' 用來替換第一個匹配的字符串
12 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
13 [liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/g'   #sed 's///g'用來替換所有匹配的字符串
14 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
15 
16 #用awk做字符串替換 (這個例子中用sub或gsub都可以,默認是空格為分隔符)
17 [liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400",$3);print $0}' #指定替換第一個
18 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
19 [liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400");print $0}'   #全部替換
20 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

 

END

 


免責聲明!

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



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