shell 字串匹配

來源:互聯網
上載者:User
問題:shell 如何判斷某個檔案名稱以某個字元開頭~
解決:
#var="cn get the length of me"
#$1: parameter 1 傳要判斷的檔案名稱字
var=$1
isCN=false

# ${var:0:2} 取var子串,從第0個字元起,取2兩個字元

if [[ ${var:0:2} -eq "cn" ]]
then
echo sub is  chinese ${var:0:2}
else
echo sub is english ${var:0:2}
fi
#function :判斷
ISCN()
{
if [[ ${var:0:2} -eq "cn" ]]
then
  echo "in ISCN"
  isCN=true
fi
}

#執行function
ISCN

echo the last isCN $isCN
=================================================================
一,shell取子串常用:
1)
echo ${string:1:2}
2)echo $string |cut -c 2-3 (取string 的第2到第3個字元)

二, 對字串的處理

包括:截取,串連,匹配,替換,翻轉... ... 
字串的處理:
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 ${string:1:2}
方法四
使用sed截取字串的最後兩位
echo $test |sed 's//(.*/)/(../)$//'
截取字串的前2位
echo $test |sed 's/^/(../)/(.*/)//'
歡迎訪問007電腦資訊
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的重複次數 007電腦資訊
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'
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.