1. 程式人生 > >shell正則提取字串中的數字並儲存到變數

shell正則提取字串中的數字並儲存到變數

1.提取數字到變數

temp=`echo  "helloworld20180719" | tr -cd "[0-9]" `

echo $temp

輸出 20180719

2.重定向到檔案

echo  "helloworld20180719" | tr -cd "[0-9]">mid.txt

cat mid.txt

輸出20180719

>表示 重定向輸出到檔案,如果檔案不存在,會自動建立,如果檔案存在,會清空檔案。

>>表示追加輸出到檔案,同樣,檔案不存在就好建立,檔案存在的話會追加新的內容到檔案的末尾,原有內容不會影響到。

我們寫指令碼時經常會使用到>>將標準錯誤輸出及資訊重定向到日誌檔案中。

2>&1表示把 標準錯誤輸出 重定向到 標準輸出

&>file 意思是把 標準輸出 和 標準錯誤輸出 都重定向到檔案file中

3.解釋一下 | tr -cd "[0-9]" 

|其實就是管道描述符,將上個指令的標準輸出。作為下個指令的標準輸入

如echo  "helloworld20180719" | tr -cd "[0-9]"

意思就是將"helloworld20180719"這句話作為 tr -cd "[0-9]"的輸入

tr其實是translate的縮寫,主要用於刪除檔案中的控制字元,或進行字元轉換

-d表示刪除,[0-9]表示所有數字,-c表示對條件取反

所以tr cd "[0-9]"這句話的意思就是,剔除非數字的字元。

即輸出20180719