1. 程式人生 > >Bash Shell(字串)操作小結

Bash Shell(字串)操作小結

基本下面引用的文章,加了幾項, 做個記錄,懶得記了,也省得每次Google。

1. 取長度

1

str="abcd"

2

expr length $str   # 4

3

echo ${#str}       # 4

4

expr"$str" : ".*"# 4

好像一般使用第二種

2. 查詢子串的位置

1

str="abc"

2

expr index $str "a"  # 1

3

expr index $str "b"  # 2

4

expr index $str "x"  # 0

5

expr index $str ""

   # 0

3. 選取子串

1

str="abcdef"

2

expr substr "$str" 1 3  # 從第一個位置開始取3個字元, abc

3

expr substr "$str" 2 5  # 從第二個位置開始取5個字元, bcdef

4

expr substr "$str" 4 5  # 從第四個位置開始取5個字元, def

5

6

echo ${str:2}           # 從第二個位置開始提取字串, bcdef

7

echo ${str:2:3}         # 從第二個位置開始提取3個字元, bcd

8

echo ${str:(-2)}        # 從倒數第二個位置向左提取字串, abcde

9

echo ${str:(-2):3}      # 從倒數第二個位置向左提取6個字元, cde

4. 擷取子串 

01

str="abbc,def,ghi,abcjkl"

02

echo ${str#a*c}     # ,def,ghi,abcjkl  一個井號(#) 表示從左邊擷取最短的匹配

03

echo ${str##a*c}    # jkl             兩個井號(##) 表示從左邊擷取最長的匹配

04

echo ${str

#"a*c"}   # ,因為str中沒有子串"a*c"

05

echo $[str##"a*c"}  # ,同理

06

echo ${str#d*f)     # abbc,def,ghi,abcjkl,

07

echo ${str#*d*f}    # ,ghi,abcjkl  

08

09

echo ${str%a*l}     # abbc,def,ghi  一個百分號(%)表示從右邊擷取最短的匹配

10

echo ${str%%b*l}    # a             兩個百分號表示(%%)表示從右邊擷取最長的匹配

11

echo ${str%a*c}     # abbc,def,ghi,abcjkl

可以這樣記憶, 井號(#)通常用於表示一個數字,它是放在前面的;百分號(%)解除安裝數字的後面; 或者這樣記憶,在鍵盤佈局中,井號(#)總是位於百分號(%)的左邊(即前面)    :-)

5. 字串替換

1

str="apple, tree, apple tree"

2

echo ${str/apple/APPLE}   # 替換第一次出現的apple

3

echo ${str//apple/APPLE}  # 替換所有apple

4

5

echo ${str/#apple/APPLE}  # 如果字串strapple開頭,則用APPLE替換它

6

echo ${str/%apple/APPLE}  # 如果字串strapple結尾,則用APPLE替換它

6. 比較

  *單組[]是可以的。

1

[[ "a.txt" == a* ]]        # 邏輯真 (pattern matching)

2

[[ "a.txt" =~ .*\.txt ]]   # 邏輯真 (regex matching)

3

[[ "abc" == "abc" ]]       # 邏輯真 (string comparision)

4

[[ "11" < "2" ]]           # 邏輯真 (string comparision), ascii值比較

7. 連線 

1

s1="hello"

2

s2="world"

3

echo ${s1}${s2}   # 當然這樣寫 $s1$s2 也行,但最好加上大括號

8. 在變數中儲存指令執行的結果

1

platform=`uname -p`

2

currentPath=`pwd`

 *注意兩邊不是單引號。

9. 分割字串到一個數組中

1

arguments=($(echo ${x} | tr "," "\n")) #x為傳入引數,以逗號分隔

10. 大小寫轉換

debPackName=`echo $2|awk '{print tolower($0)}'#轉為小寫

debPackName=`echo $2|awk '{print toupper($0)}'` #轉為大寫


相關推薦

Bash Shell(字串)操作小結

基本下面引用的文章,加了幾項, 做個記錄,懶得記了,也省得每次Google。 1. 取長度 1 str="abcd" 2 expr length $str   # 4 3 echo ${#str}       # 4 4 expr"$st

linux shell 字串操作(長度,查詢,替換)詳解 BASH

在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如:awk,sed都可以做字串各種操作。 其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。 一、判斷讀取字串值表示式含義${var}變數var的值, 與$var相同

Bash Shell操作環境

路徑 ctrl+ star 操作 win 處理 指令 stty sta 路徑和指令搜索順序 bash進站歡迎 bash環境配置文件 終端機設定 通配符和特殊符號 tty1~tty6命令接口會讀取本地計算機的一些按鍵設定 使用stty可以查閱目按鍵內容 [[email

shell 基本操作小結

lena 取字符 ide text cond spa operation ava repl 1.echo和if else fi命令 #!/bin/bash echo hello;echo there filename=demo.sh if [ -e "$filename"

shell 字串操作 + 變數替換

本篇內容包括:     字串操作     變數替換 1.字串操作      表示式 含義 ${#string} 獲取字

shell字串操作

表示式 含義 ${#string} $string的長度 expr length $string $string的長度 expr

Linux Shell 字串操作(長度/查詢/替換)詳解

在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如:awk、sed都可以做字串各種操作。 其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。 一、判斷讀取字串值

Linux:shell變數功能和Bash shell操作環境

shell的變數功能 sh和bash命令 兩者都是shell,都是解析工具。 bash(Bourne Again SHell) 是Linux標準的預設shell ,它基於Bourne shell,吸收了C shell和Korn shell的一些特性。 sh(Bou

Shell字串操作大全

1.字串宣告 一般字串宣告時,都會賦值 str='test' 但是在指令碼執行中,為了避免出現引用為宣告的字串變數時,可以在如下處理: #如果str沒宣告,則輸出DEFAULT echo "${str=DEFAULT}" #DEFAULT 2.字串長度 str=‘a

Linux Bash Shell字串分割substring等

近期在做持續整合專案,因為要做高使用性的平臺,公司專案組各業務線打包流程不盡相同,採用了業務藏入指令碼的方式,原有java可實現的操作寫入了指令碼中 指令碼開發中遇到的問題是:原java中的字串分割操作(substring indexOf等)不知道怎麼處理(比如/a/b

shell字串操作(一)——字串變數

一、字串變數定義與賦值 符號意義: :空測試    =>空為真 -  負向測試 =>不存在為真 + 正向測試 =>存在為真 = 賦值 ?有問題,錯誤 表示式 含義 示例 var=string var='string

bash字串操作以及shell中$(( ))與$( )還有${ }的區別

介紹下Shell中的${}、##和%%使用範例,本文給出了不同情況下得到的結果。 假設定義了一個變數為: 程式碼如下: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分別替換得到不同的值: ${file#*/}:刪掉第一個 / 及其左邊的字串:dir1/di

shell變數字串常用操作小結

1、常用的基本操作解析: ①${#string} //返回$string的長度(字串中的字元個數),${string} | wc -m也可以達到類似的效果 ②${string:position} //返回$string的position開始的字串(提取字串

bash shell 中時間操作常用方法總結

hour day 當前時間 簡單的 之前 nbsp seconds 獲取 相互   在日常的工作中,bash shell 的時間操作非常頻繁。比如shell腳本定時發送數據統計的時候,會查看當前是否為預定的發送時間。或者使用文件保存一些數據時,一般會生成時間字符串當做文

linux bash shell:最方便的字串大小寫轉換(lowercase/uppercase conversion)

關於字串大小寫轉換,是寫 linux 指令碼經常乾的事兒,所以總想找個方便的方法讓我少打點字兒,搜尋國內的中文資源,網上也能找到很多關於這個帖子,介紹的方法都差不多,用typeset是最簡單的方法了,但我覺得還是不夠簡單,因為需要多定義一個變數。 google上找到這個stackov

shell中的字串操作——字串的切割總結

前言 在python和java等語言中,對字串操作大多都是呼叫函式來完成,但是像shell這種使用c語言編寫的程式,對字串的切割顯得更加簡單。shell指令碼中對字串的切割有很多種,在這裡我將我熟悉,好用的方法給總結出來,分享給大家,希望能夠對你們的學習和工作起到幫助。 1、${va

shell指令碼關於字串操作

字串單引號和雙引號的差別 單引號中間不能再次出現單引號,這就意味這單引號中間出現變數是無效的,直接點說,單引號中間無論出現什麼都會原樣輸出。但是單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,作為字串拼接使用。雙引號中間是可以出現變數的,而且雙引號中間是

shell 字串擷取操作

字串操作(長度,讀取,替換) {#string} $string的長度       ${string:position} 在$string中, 從位置$position開始提取子串   ${string:position:le

Bash 中常見的字串操作

獲取字串長度 ${#string} MyString=abcABC123ABCabc echo ${#MyString} # 結果為 15 注意這會自動去掉字串結尾處的空格,如果在字串中包含空格(開頭、中間或結尾),就需要使用引號把字串包裹起來: MyString

awk字串操作字串連結、傳入傳出shell變數) awk 字串連線操作(字串轉數字,數字轉字串) awk當中使用外部變數 awk中使用shell的環境變數 awk如何向shell傳值

1.awk基礎 awk的環境變數及其意義   https://blog.csdn.net/snowpay/article/details/52451718 linux awk命令詳解 https://www.cnblogs.com/xudong-bupt/p/3721210.html 2.aw