原文連結
摘要:shell中字串的處理
對字串的處理
包括:截取,串連,匹配,替換,翻轉... ...
一天累積一點!
字串的處理:
1,截取
方法一:
echo $a|awk ’{print substr( ,1,8)}’
substr是awk中的一個子函數,對第一個參數的進行截取,從第一個字元開始,共截取8個字元,如果不夠就從第二個字元中補充
方法二
echo $a|cut -b2-8
cut:對標準輸入的字串進行處理
cut -bn-m:以byte為單位,從第n個byte開始,取m個
cut -bn,m:以byte為單位,截取第n,m個byte
cut -b-n,m:以byte為單位,截取1-n,和第m個
-c:以charactor為單位
-d:指定分隔字元,預設為tab
-s:使標準輸入中沒有delimeter
cut -f1:截取第1個域
方法三
a=123456
echo $
方法四
使用sed截取字串的最後兩位
echo $test |sed ’s//(.*/)/(../)$//’
截取字串的前2位
echo $test |sed ’s/^/(../)/(.*/)//’
2,比較
好像沒有什麼可以比較的
3,串連
$a$b
或者
$string
4,翻轉
方法一:
使用rev命令
方法二:
編寫指令碼實現
#!/usr/bin/awk -f
################################################################
# Description : duplicate rev in awk
################################################################
{
revline = ""
for (i=1;i<=length;i++)
{
revline = substr(,i,1) revline
}
}
END{print revline}
5,匹配
grep
egrep
fgrep
6,排序
7,替換
bash中:
%x=abcdabcd
%echo $ # 只替換一個
bbcdabcd
%echo $ # 替換所有
bbcdbbcd
sh中:
??
如何替換/
使用sed
替換所有匹配
echo $test |sed ’s/xx/yy’
替換單個匹配
??
8,得到字串的長度:
bash當中
$
或者
expr "$VAR" : ’.*’
9,判斷字串是否為數字
10,得到字串中某個字元的重複次數
echo $a |tr "x" "/n" |wc -l
得到的結果需要減去1
或者
echo $a |awk -F"x" ’{print NF-1}’
11,得到字串中某個string的重複次數
12,將一批檔案中的所有string替換
for i in file_list
do
vi $i <<-!
:g/xxxx/s//XXXX/g
:wq
!
done
13,如何將字串內每兩個字元中間插入一個字元
使用sed
echo $test |sed ’s/../&[insert char]/g’