java編寫的文件治理器代碼分享。本站提示廣大學習愛好者:(java編寫的文件治理器代碼分享)文章只能為提供參考,不一定能成為您想要的結果。以下是java編寫的文件治理器代碼分享正文
在做shell批處置法式時刻,常常會觸及到字符串相干操作。有許多敕令語句,如:awk,sed都可以做字符串各類操作。 其實shell內置一系列操作符號,可以到達相似後果,年夜家曉得,應用外部操作符會省略啟動內部法式等時光,是以速度會異常的快。
1、斷定讀取字符串值
表達式
寄義
${var}
變量var的值, 與$var雷同
${var-DEFAULT}
假如var沒有被聲明, 那末就以$DEFAULT作為其值 *
${var:-DEFAULT}
假如var沒有被聲明, 或許其值為空, 那末就以$DEFAULT作為其值 *
${var=DEFAULT}
假如var沒有被聲明, 那末就以$DEFAULT作為其值 *
${var:=DEFAULT}
假如var沒有被聲明, 或許其值為空, 那末就以$DEFAULT作為其值 *
${var+OTHER}
假如var聲清楚明了, 那末其值就是$OTHER, 不然就為null字符串
${var:+OTHER}
假如var被設置了, 那末其值就是$OTHER, 不然就為null字符串
${var?ERR_MSG}
假如var沒被聲明, 那末就打印$ERR_MSG *
${var:?ERR_MSG}
假如var沒被設置, 那末就打印$ERR_MSG *
${!varprefix*}
婚配之前一切以varprefix開首停止聲明的變量
${!varprefix@}
婚配之前一切以varprefix開首停止聲明的變量
參加了“*” 不是意思是: 固然, 假如變量var曾經被設置的話, 那末其值就是$var.
[chengmo@localhost ~]$ echo ${abc-'ok'} ok [chengmo@localhost ~]$ echo $abc [chengmo@localhost ~]$ echo ${abc='ok'} ok [chengmo@localhost ~]$ echo $abc ok 假如abc 沒有聲明“=" 還會給abc賦值。 [chengmo@localhost ~]$ var1=11;var2=12;var3= [chengmo@localhost ~]$ echo ${!v@} var1 var2 var3 [chengmo@localhost ~]$ echo ${!v*} var1 var2 var3 ${!varprefix*}與${!varprefix@}類似,可以經由過程變量名前綴字符,搜刮曾經界說的變量,不管能否為空值。
2、字符串操作(長度,讀取,調換)
表達式
寄義
${#string}
$string的長度
${string:position}
在$string中, 從地位$position開端提取子串
${string:position:length}
在$string中, 從地位$position開端提取長度為$length的子串
${string#substring}
從變量$string的開首, 刪除最短婚配$substring的子串
${string##substring}
從變量$string的開首, 刪除最長婚配$substring的子串
${string%substring}
從變量$string的開頭, 刪除最短婚配$substring的子串
${string%%substring}
從變量$string的開頭, 刪除最長婚配$substring的子串
${string/substring/replacement}
應用$replacement, 來取代第一個婚配的$substring
${string//substring/replacement}
應用$replacement, 取代一切婚配的$substring
${string/#substring/replacement}
假如$string的前綴婚配$substring, 那末就用$replacement來取代婚配到的$substring
${string/%substring/replacement}
假如$string的後綴婚配$substring, 那末就用$replacement來取代婚配到的$substring
解釋:"* $substring”可所以一個正則表達式.
1.長度 [web97@salewell97 ~]$ test='I love china' [web97@salewell97 ~]$ echo ${#test} 12 ${#變量名}獲得字符串長度 2.截取字串 [chengmo@localhost ~]$ test='I love china' [chengmo@localhost ~]$ echo ${test:5} e china [chengmo@localhost ~]$ echo ${test:5:10} e china ${變量名:肇端:長度}獲得子字符串 3.字符串刪除 [chengmo@localhost ~]$ test='c:/windows/boot.ini' [chengmo@localhost ~]$ echo ${test#/} c:/windows/boot.ini [chengmo@localhost ~]$ echo ${test#*/} windows/boot.ini [chengmo@localhost ~]$ echo ${test##*/} boot.ini [chengmo@localhost ~]$ echo ${test%/*} c:/windows [chengmo@localhost ~]$ echo ${test%%/*} ${變量名#substring正則表達式}從字符串開首開端裝備substring,刪除婚配上的表達式。 ${變量名%substring正則表達式}從字符串開頭開端裝備substring,刪除婚配上的表達式。 留意:${test##*/},${test%/*} 分離是獲得文件名,或許目次地址最簡略辦法。 4.字符串調換 [chengmo@localhost ~]$ test='c:/windows/boot.ini' [chengmo@localhost ~]$ echo ${test/\//\\} c:\windows/boot.ini [chengmo@localhost ~]$ echo ${test//\//\\} c:\windows\boot.ini ${變量/查找/調換值} 一個“/”表現調換第一個,”//”表現調換一切,當查找中湧現了:”/”請加本義符”\/”表現。
3、機能比擬
在shell中,經由過程awk,sed,expr 等都可以完成,字符串上述操作。上面我們停止機能比擬。
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=${#test};done;
real 0m0.173s
user 0m0.139s
sys 0m0.004s
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m9.734s
user 0m1.628s
速度相差上百倍,挪用內部敕令處置,與內置操作符機能相差異常年夜。在shell編程中,盡可能用內置操作符或許函數完成。應用awk,sed相似會湧現如許成果。