<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對字串變數的擷取操作一般都是通過${操作符}的方式進行,如下:
格式:${string:start:length}
其中,string 是要擷取的字串,start 是起始位置(下標從 0 開始計數),length 是要擷取的長度(省略的話表示直到字串的末尾)
例如:
str_time='2022-02-01 12:30:58' date_no=${str_time:0:10} #擷取前面10位字元:2022-01-01 date_mon=${str_time:5:2} #從前面第6位開始擷取2位字元:02 date_time=${str_time:0-8} #擷取後面8位元字元:12:30:58 date_hh=${str_time:0-8:2} #擷取後面8位元字元的前面兩位:12
格式1:${string%substr*} #匹配從右往左第一個substr
格式2:${string%%substr*} #匹配從右往左最後一個substr
說明:上面%的運算實際上可以理解為,刪除substr以及substr右邊的任意字串,*號在substr右邊,從而得到substr左邊剩餘字串。 格式1和格式2的區別是匹配substr的位置
例如:
v_str='/app/logs/133.38.112.177_202204111015.log' echo ${v_str%/*} #擷取從右往左第一個'/' 左邊的字元:/app/logs echo ${v_str%%/*} #擷取從右往左最後個'/' 左邊的字元:空
格式1:${string#*substr} #匹配從左往右第一個substr
格式2:${string##*substr} #匹配從左往右最後一個substr
說明:上面'#'的運算實際上可以理解為,刪除substr以及substr左邊的任意字串,*號在substr的左邊,從而得到substr右邊剩餘字串。 格式1和格式2的區別是匹配substr的位置
例如:
v_str='/app/logs/133.38.112.177_202204111015.log' #擷取從左往右第一個'/' 右邊的字元:app/logs/133.38.112.177_202204111015.log echo ${v_str#*/} #擷取從左往右最後個'/' 右邊的字元:133.38.112.177_202204111015.log echo ${v_str##*/}
注意:用%和#擷取字串的用法,比較容易忘記容易混淆。
有個小技巧加以區別:
鍵盤上#號在$符號的左邊,所以是操作並刪除左邊字元,所以*在substr左邊,一個#號代表取第一個substr(從左往右):${string#*substr}
鍵盤上%號在$符號的右邊,所以是操作並刪除右邊字元,所以*在substr的右邊,一個%代表取第一個substr(從右往左):${string%substr*}
格式:cut OPTION... [FILE]
cut 命令從檔案的每一行剪下位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。
OPTION:
用法:
例如:處理test.txt檔案,擷取每一行的指定字元
$ cat test.txt a_202204110214_10.251.82.225 b_202204110215_10.251.82.223 b_202204110212_10.251.82.226 c_202204110214_10.251.82.228 -b選項: $ cut -b 1,3 test.txt #擷取1,3位元組 a2 b2 b2 c2 $ cut -b 1-3 test.txt #擷取1到3位元組 a_2 b_2 b_2 c_2 -c選項: $ cut -c 1,3 test.txt #擷取1,3字元 a2 b2 b2 c2 $ cut -c 1-3 test.txt #擷取1到3字元 a_2 b_2 b_2 c_2 -d -f選項: $ cut -d'_' -f3 test.txt #以下劃線分割,取第三個區域字元 10.251.82.225 10.251.82.223 10.251.82.226 10.251.82.228 $ cat test.txt | cut -d'_' -f3 #結合管道使用效果一樣
val=「hello++world++shell」 echo ${val%++*} # 刪除最後一個 ++ 後邊字元,擷取前邊剩下的內容 # 輸出: hello++world echo ${val%%++*} # 刪除第一個 ++ 後邊字元,只擷取保留第一個 ++ 前邊的內容 # 輸出: hello
範例 擷取檔案名字,去掉字尾
str_file="123.hello.json" echo ${str_file%.*} # 刪除最後一個 . 後邊的json,擷取123.hello # 輸出: 123.hello
到此這篇關於linux shell字串擷取的文章就介紹到這了,更多相關linux shell字串擷取內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45