1)方法一,使用 ${}表示式
格式:$
定義乙個變數school,並確認其字串長度:
使用${}擷取時,起始位置可以省略,省略時從第乙個字元開始截。比如,以下操作都可以從左側開始擷取前6個字元:[root@svr5 ~]# school="tarena it group."
[root@svr5 ~]# echo $
16 //包括16個字元(含空格)
或者[root@svr5 ~]# echo $
tarena
使用${}方式擷取字串時,起始位置是從0開始的(和陣列下標編號類似) 。[root@svr5 ~]# echo $
tarena
因此,如果從起始位置1開始擷取6個字元,那就變成這個樣子了:
[root@svr5 ~]# echo $
arena //最後的空格未顯示出來,實際為「arena 」
2)方法二,使用 expr substr[root@svr5 ~]# md5sum /etc/fstab //直接檢視md5sum校驗值
eef0254e6049a411dc30db864c0ee6ea /etc/fstab
[root@svr5 ~]# md5str=$(md5sum /etc/fstab) //儲存到變數
[root@svr5 ~]# echo $ //擷取前32個字元(md5值的固定長度)
eef0254e6049a411dc30db864c0ee6ea
格式:expr substr 「$var」 起始位置 長度
還以前面的school變數為例,確認原始值:
使用expr substr擷取字串時,起始編號從1開始,這個要注意與${}相區分。[root@svr5 ~]# echo $school
tarena it group.
[root@svr5 ~]# echo $
16
從左側擷取school變數的前6個字元:
這裡注意,因為school變數的值裡含有空格,所以應該加雙引號進行呼叫,否則是會報錯的:[root@svr5 ~]# expr substr "$school" 1 6
tarena
從左側擷取school變數的第11-16個字元:[root@svr5 ~]# expr substr $school 1 6
expr: 語法錯誤
[root@svr5 ~]# expr substr "$school" 11 16
group.
3)方式三,使用cut分割工具[root@svr5 ~]# md5sum /etc/fstab //確認md5sum校驗值
eef0254e6049a411dc30db864c0ee6ea /etc/fstab
[root@svr5 ~]# md5str=$(md5sum /etc/fstab) //儲存到變數
[root@svr5 ~]# expr substr "$md5str" 1 32 //擷取前32個字元
eef0254e6049a411dc30db864c0ee6ea
格式:echo $var | cut -b 起始位置-結束位置
選項 -b 表示按位元組擷取字元,其中起始位置、結束位置都可以省略。當省略起始位置時,視為從第1個字元開始(編號也是從1開始,與expr類似),當省略結束位置時,視為擷取到最後。
還以前面的school變數為例,確認原始值:
從左側擷取前6個字元,可執行以下操作:[root@svr5 ~]# echo $school
tarena it group.
[root@svr5 ~]# echo $
16
或者[root@svr5 ~]# echo $school | cut -b 1-6
tarena
擷取第11-16個字元:[root@svr5 ~]# echo $school | cut -b -6
tarena
從第8個字元擷取到末尾:[root@svr5 ~]# echo $school | cut -b 11-16
group.
只擷取單個字元,比如第9個字元:[root@svr5 ~]# echo $school | cut -b 8-
it group.
如果起始位置、結束位置同時省略,那就和直接echo變數值沒啥區別了:[root@svr5 ~]# echo $school | cut -b 9
t
[root@svr5 ~]# echo $school | cut -b -
tarena it group.
[root@svr5 ~]# md5sum /etc/fstab //確認md5sum校驗值
eef0254e6049a411dc30db864c0ee6ea /etc/fstab
[root@svr5 ~]# md5sum /etc/fstab | cut -b -32 //擷取前32個字元
eef0254e6049a411dc30db864c0ee6ea
linux shell程式設計之 if語句
一 語句格式 一行中的寫法 if test commands then consequent commands fi 多行的寫法 if 條件 then command else command fi 基本語法記住亮點 1 按照漢語的方式記憶 如果 if 那麼 then 就 否則 else 就 2 記...
Linux shell 程式設計之提取字元與統計
1 假如,有一bb文件的格式如下 現在要求提取以上紅體字部分,我們可以通過以下命令實現 grep aa.png bb cut d f6 2 假如,有一bb文件的格式如下 現在,要獲取紅體字部分,可以用以下命令來實現 grep aa.png bb cut d f4 cut sd f3 3 以第2點為例...
Linux shell程式設計之awk sed用法詳解
awk的用法 1.awk的使用 呼叫方式 1.命令列方式 2.將所有awk命令插入乙個檔案,並使awk程式可執行,然後使awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。3.將所有的awk命令插入乙個單獨檔案,然後呼叫。選項說明 f 域符號 預設為空格 f 指明awk指令碼 2.模式...