find 字串處理

2021-09-30 05:09:32 字數 2813 閱讀 1588

find /etc -name aaa -exec cmd1 {}/; -exec cmd2 {}/;

儘管 basename 和 dirname

是非常好的工具,但有時可能需要執行更高階的字串「截斷」,而不只是標準的路徑名操作。當需要更強的說服力時,能利用 bash

內建的變數擴充套件功能。已使用了類似於 $ 的標準型別的變數擴充套件。不過 bash

自身也能執行一些便利的字串截斷。看一下這些例子:

第一種方法:

$ 從左向右擷取最後乙個string後的字串

$從左向右擷取第乙個string後的字串

$從右向左擷取最後乙個string後的字串

$從右向左擷取第乙個string後的字串

"*"只是個萬用字元能不要

在第乙個例子中,輸入了 $。他的確切含義是什麼?基本上,在 $ 中輸入環境變數名稱,兩個 ##,然後是萬用字元

("*fo")。然後,bash 取得 myvar,找到從字串"foodforthought.jpg" 開始處開始、且匹配萬用字元 "*fo"

的 最長 子字串,然後將其從字串的開始處截去。剛開始理解時會有些困難,為了感受一下這個特別的 "##" 選項怎麼工作,讓我們一步步地看看

bash 怎麼完成這個擴充套件。首先,他從 "foodforthought.jpg" 的開始處搜尋和 "*fo"

萬用字元匹配的子字串。以下是檢查到的子字串

在搜尋了匹配的字串之後,能看到 bash 找到兩個匹配。他選擇最長的匹配,從初始字串的開始處除去,然後返回結果。

上面所示的第二個變數擴充套件形式看起來和第乙個相同,不過他只使用乙個 "#" -- 並且 bash 執行

幾乎同樣的過程。他檢視和第乙個例子相同的子字串系列,不過 bash 從初始字串除去 最短 的匹配,然後返回結果。所以,一查到 "fo"

字串,他就從字串中除去 "fo",然後返回 "odforthought.jpg"。

這樣說可能會令人十分困惑,下面以一簡

單方式記住這個功能。當搜尋最長匹配時,使用 ##(因為 ## 比 # 長)。當搜尋最短匹配時,使用 #。看,不難記吧!等一下,怎樣記住應該使用

』#』 字元來從字串開始部分除去?非常簡單!注意到了嗎:在美國鍵盤上,shift-4 是 "$",他是 bash 變數擴充套件字元。在鍵盤上,緊靠

"$" 左邊的是 "#"。這樣,能看到:"#" 位於 "$" 的「開始處」,因此(根據我們的記憶法),"#"

字串的開始處除去字元。你可能要問:怎麼從字串末尾除去字元。如果猜到我們使用美國鍵盤上緊靠 "$" 右邊 的字元

("%),那就猜對了。這裡有一些簡單的例子,解釋怎麼截去字串的末尾部分:

$ myfoo="chickensoup.tar.gz"

$ echo $

chickensoup

$ echo $

chickensoup.tar

正如你所見,除了將匹配萬用字元從字串末尾除去之外,% 和 %% 變數擴充套件選項和 # 和 ## 的工作方式相同。請注意:如果要從末尾除去特定子字串,不必使用 "*" 字元:

myfood="chickensoup"

$ echo $

chicken

在此例中,使用 "%%" 或 "%" 並不重要,因為只能有乙個匹配。還要記住:如果忘記了應該使用 "#" 還是 "%",則看一下鍵盤上的 3、4 和 5 鍵,然後猜出來。

第二種方法:$:擷取變數varible從n1到n2之間的字串

能根據特定字元偏移和長度,使用另一種形式的變數擴充套件,來選擇特定子字串。試著在 bash 中輸入以下行:

$ exclaim=cowabunga

$ echo $

cow$ echo $

abunga

這種形式的字串截斷非常簡便,只需用冒號分開來指定起始字元和子字串長度。

應用字串截斷

字串處理 字串反轉

請原諒博主今天很閒,於是乎博主又開始更新微博了。這次要更新的問題是 編寫乙個函式,反轉乙個單詞的順序。例如 do or do not,there is no try.就要反轉成 try.no is there not,do or do 大家要認真看看這道題,這道題和大家想象的貌似有點不同。首先字串反...

字串處理

uncode與ansi字串轉換 我們使用windows函式multibytetowidechar將多位元組字串轉換成寬字元字串。函式如下 int multibytetowidechar uintcodepage dworddwflags lpcstrlpmultibytestr intcbmulti...

字串處理

byte array new byte 2 array system.text.encoding.default.getbytes 啊 int i1 short array 0 0 int i2 short array 1 0 unicode解碼方式下的漢字碼 array system.text.e...