shell正則提取字串中的數字並儲存到變數
阿新 • • 發佈:2019-02-12
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