shell中取字符串子串的幾種方式
echo "123456789" | awk '{print substr($0,5,2)}'
截取
1)awk中函數substr
substr(源字符串,開始索引,長度) 開始索引以0開始
示例:
awk '{$a=substr($0,0,2);print $a;}' filename
假設文件中為只有一行為abcdefg,則返回結果為ab
(2)expr substr
expr substr 字符串 開始索引 長度 開始索引以1開始
示例:
expr substr "abc" 2 2
顯示bc
(3)echo ${str:開始索引} 或 echo ${str:開始索引:長度} 開始索引為0
示例:
str="abc"
echo ${str:1},顯示bc
echo ${str:1:2},顯示bc
https://blog.csdn.net/Sharp_UP/article/details/74990277
1、cut命令截取
使用說明
cut 命令從文件的每一行剪切字節、字符和字段並將這些字節、字符和字段寫至標准輸出。
如果不指定 File 參數,cut 命令將讀取標准輸入。必須指定 -b、-c 或 -f 標志之一。
主要參數
-b :以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了 -n 標志。
-c :以字符為單位進行分割。
-d :自定義分隔符,默認為制表符。
-f :與-d一起使用,指定顯示哪個區域。
-n :取消分割多字節字符。僅和 -b 標志一起使用。如果字符的最后一個字節落在由 -b 標志的 List 參數指示的<br />范圍之內,該字符將被寫出;否則,該字符將被排除。
1)、使用cut -c 可以截取以字符為單位的串區間
注:以 - 作為分隔符是截取對應區間內的串
以 ,作為分隔符是截取對應位置的字符
2)、cut -b 用法和cut -c 相同,不同的是以字節為單位
2、# 號截取,刪除左邊字符,保留右邊字符。
echo ${var#*//}
其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符
3、 ## 號截取,刪除左邊字符,保留右邊字符。
echo ${var##*/}
##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符
4、 %號截取,刪除右邊字符,保留左邊字符
echo ${var%/*}
%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符
5、%% 號截取,刪除右邊字符,保留左邊字符
echo ${var%%/*}
%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符
6、 從左邊第幾個字符開始,及字符的個數
echo ${var:0:5}
其中的 0 表示左邊第一個字符開始,5 表示字符的總個數。
7、 從左邊第幾個字符開始,一直到結束。
echo ${var:7}
其中的 7 表示左邊第8個字符開始,一直到結束。
8、從右邊第幾個字符開始,及字符的個數
echo ${var:0-7:3}
其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數。
8. 從右邊第幾個字符開始,一直到結束。
echo ${var:0-7}
表示從右邊第七個字符開始,一直到結束。
注:左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示