最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux?shell字符串截取的詳細總結(jié)(實用!)

 更新時間:2022年07月27日 15:55:23   作者:悟空悟道  
在開發(fā)的時候經(jīng)常會自行寫一些小的腳本,其中就用到截取字符串的操作,這篇文章主要給大家介紹了關(guān)于linux?shell字符串截取的詳細方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一、字符串變量的截取操作

對字符串變量的截取操作一般都是通過${操作符}的方式進行,如下:

1.從指定位置(index)截取固定長度

格式:${string:start:length}

其中,string 是要截取的字符串,start 是起始位置(下標(biāo)從 0 開始計數(shù)),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

2.截取指定字符串(子字符串)左邊的字符

格式1:${string%substr*}                          #匹配從右往左第一個substr

格式2:${string%%substr*}                       #匹配從右往左最后一個substr

說明:上面%的運算實際上可以理解為,刪除substr以及substr右邊的任意字符串,*號在substr右邊,從而得到substr左邊剩余字符串。  格式1和格式2的區(qū)別是匹配substr的位置

例如:

v_str='/app/logs/133.38.112.177_202204111015.log'
echo ${v_str%/*}? ? ? ? ? ? ? #截取從右往左第一個'/' 左邊的字符:/app/logs
echo ${v_str%%/*}? ? ? ? ? ?#截取從右往左最后個'/' 左邊的字符:空

3.截取指定字符串(子字符串)右邊的字符

格式1:${string#*substr}                          #匹配從左往右第一個substr

格式2:${string##*substr}                        #匹配從左往右最后一個substr

說明:上面'#'的運算實際上可以理解為,刪除substr以及substr左邊的任意字符串,*號在substr的左邊,從而得到substr右邊剩余字符串。  格式1和格式2的區(qū)別是匹配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##*/}

注意:用%和#截取字符串的用法,比較容易忘記容易混淆。

有個小技巧加以區(qū)別

鍵盤上#號在$符號的左邊,所以是操作并刪除左邊字符,所以*在substr左邊,一個#號代表取第一個substr(從左往右):${string#*substr}

鍵盤上%號在$符號的右邊,所以是操作并刪除右邊字符,所以*在substr的右邊,一個%代表取第一個substr(從右往左):${string%substr*} 

二、用cut命令截?。ㄟm合處理管道流或行文本字符)

格式:cut OPTION... [FILE]

cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段寫至標(biāo)準(zhǔn)輸出。

如果不指定 File 參數(shù),cut 命令將讀取標(biāo)準(zhǔn)輸入。必須指定 -b、-c 或 -f 標(biāo)志之一。

OPTION:

  • -b :以字節(jié)為單位選取指定的字節(jié)數(shù)
  • -c :以字符為單位選取指定的字符數(shù)
  • -d :指定分隔符(默認是tab)將字符串分為多個區(qū)域,一般與-f參數(shù)一起使用
  • -f :與-d一起使用,指定選取哪個區(qū)域
  • -n :取消分割多字節(jié)字符。僅和 -b 標(biāo)志一起使用。如果字符的最后一個字節(jié)落在由 -b 標(biāo)志的 List 參數(shù)指示的范圍之內(nèi),該字符將被寫出;否則,該字符將被排除

用法:

例如:處理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字節(jié)

a2
b2
b2
c2

$ cut -b 1-3 test.txt? ?#截取1到3字節(jié)

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? ?#以下劃線分割,取第三個區(qū)域字符

10.251.82.225
10.251.82.223
10.251.82.226
10.251.82.228

$ cat test.txt | cut -d'_' -f3? ?#結(jié)合管道使用效果一樣

補充:使用%和%%:截取的是指定字符前邊內(nèi)容

val=“hello++world++shell”

echo ${val%++*}
# 刪除最后一個 ++ 后邊字符,截取前邊剩下的內(nèi)容
# 輸出: hello++world

echo ${val%%++*}
# 刪除第一個 ++ 后邊字符,只截取保留第一個 ++ 前邊的內(nèi)容
# 輸出: hello?

示例 截取文件名字,去掉后綴

str_file="123.hello.json"

echo ${str_file%.*}
# 刪除最后一個 . 后邊的json,截取123.hello
# 輸出: 123.hello

總結(jié)

到此這篇關(guān)于linux shell字符串截取的文章就介紹到這了,更多相關(guān)linux shell字符串截取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Bash Shell檢查文件是否存在的方法

    使用Bash Shell檢查文件是否存在的方法

    大多數(shù)情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等。下面這篇文章就主要介紹了使用Bash Shell檢查文件是否存在的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 5個Shell腳本編程入門練習(xí)例子

    5個Shell腳本編程入門練習(xí)例子

    這篇文章主要介紹了5個Shell腳本編程入門例子,涵蓋了各種操作,又有一些游戲的性質(zhì),作為入門練習(xí)例子是不很不錯的,需要的朋友可以參考下
    2014-06-06
  • Linux中根據(jù)一個單詞快速鎖定到日志的操作命令

    Linux中根據(jù)一個單詞快速鎖定到日志的操作命令

    這篇文章給大家介紹了Linux中如何根據(jù)一個單詞快速鎖定到日志,文中通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • linux中shell腳本實現(xiàn)下載完關(guān)機

    linux中shell腳本實現(xiàn)下載完關(guān)機

    本文給大家分享的是個人在實際應(yīng)用中制作的一個小程序,十分的實用,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • 解決centos7 開機/etc/rc.local 不執(zhí)行的問題

    解決centos7 開機/etc/rc.local 不執(zhí)行的問題

    下面小編就為大家?guī)硪黄鉀Qcentos7 開機/etc/rc.local 不執(zhí)行的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • linux命令之crontab命令用法詳解

    linux命令之crontab命令用法詳解

    crontab命令一般被用來提交和管理用戶的需要周期性執(zhí)行的任務(wù),與windows下的計劃任務(wù)類似,這篇文章主要為大家介紹了它的使用,需要的可以參考下
    2023-08-08
  • Linux創(chuàng)建用戶的操作命令

    Linux創(chuàng)建用戶的操作命令

    useradd或adduser命令用來建立用戶帳號和創(chuàng)建用戶的起始目錄,使用權(quán)限是超級用戶。這篇文章給大家介紹了Linux創(chuàng)建用戶的操作命令,感興趣的朋友一起看看吧
    2018-08-08
  • Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享

    Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享

    這篇文章主要介紹了Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享,本文直接給出腳本實現(xiàn)代碼,代碼相關(guān)原理都寫在了注釋里,需要的朋友可以參考下
    2015-03-03
  • Shell執(zhí)行腳本并輸出日志文件的方法

    Shell執(zhí)行腳本并輸出日志文件的方法

    這篇文章主要介紹了Shell執(zhí)行腳本并輸出日志文件的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Linux獲取當(dāng)前目錄的命令詳解

    Linux獲取當(dāng)前目錄的命令詳解

    在 Unix 和類 Unix 系統(tǒng)中,命令行界面(CLI)是與操作系統(tǒng)交互的重要方式,通過 CLI,用戶可以執(zhí)行各種命令來管理文件、運行程序、配置系統(tǒng)等,在這些命令中,ROOT_PATH=$PWD是一個簡單但極其有用的命令,本文將詳細解析這個命令的含義、用途以及如何在實際中應(yīng)用
    2024-12-12

最新評論

金坛市| 佛坪县| 报价| 上高县| 阜平县| 桑植县| 乌审旗| 高密市| 新龙县| 噶尔县| 南丹县| 郓城县| 汉阴县| 美姑县| 和田县| 兴义市| 田林县| 鲜城| 大姚县| 城固县| 宿州市| 中超| 鹤壁市| 介休市| 金阳县| 吴桥县| 临沧市| 克什克腾旗| 雷波县| 崇信县| 桦南县| 海口市| 尖扎县| 齐河县| 新源县| 石狮市| 彝良县| 棋牌| 扎赉特旗| 蓬溪县| 抚宁县|