0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹Shell判斷字符串包含關(guān)系的幾種方法

馬哥Linux運(yùn)維 ? 來(lái)源:csdn ? 2023-05-12 15:58 ? 次閱讀

在 bash 腳本中,有不止一種檢查子字符串的方法,我們今天介紹一些簡(jiǎn)單的例子,然后在分享一個(gè)常用的 bash 腳本。

我們?cè)趯?bash 腳本的時(shí)候,假如有一個(gè)字符串,我們想檢查其中是否包含另一個(gè)子字符串,那這個(gè)時(shí)候需要怎樣做呢?這里介紹Shell判斷字符串包含關(guān)系的幾種方法

1、通過(guò)grep來(lái)判斷:

str1="abcdefgh"
str2="def"
result=$(echo $str1 | grep "${str2}")
if [[ "$result" != "" ]]
then
    echo "包含"
else
    echo "不包含"
fi

先打印長(zhǎng)字符串,然后在長(zhǎng)字符串中 grep 查找要搜索的字符串,用變量result記錄結(jié)果,如果結(jié)果不為空,說(shuō)明str1包含str2。如果結(jié)果為空,說(shuō)明不包含。這個(gè)方法充分利用了grep 的特性,最為簡(jiǎn)潔。

2、字符串運(yùn)算符

str1="abcdefgh"
str2="def"
if [[ $str1 =~ $str2 ]]
then
    echo "包含"
else
    echo "不包含"
fi

利用字符串運(yùn)算符 =~ 直接判斷str1是否包含str2。

3、利用通配符

str1="abcdefgh"
str2="def"
if [[ $str1 == *$str2* ]]
then
    echo "包含"
else
    echo "不包含"
fi

用通配符*號(hào)代理str1中非str2的部分,如果結(jié)果相等說(shuō)明包含,反之不包含。

4、利用case in 語(yǔ)句

str1="abcdefgh"
str2="def"
case $str1 in 
    *"$str2"*) echo Enemy Spot ;;
    *) echo nope ;;
esac

5、利用替換

str1="abcdefgh"
str2="def"
if [[ ${str1/${str2}//} == $str1 ]]
    then
       echo "不包含"
    else
      echo "包含"
fi

注意下文中的用的是[[]]還是[]

Shell判斷文件是否包含給定字符串

給定一個(gè)字符,比方說(shuō)“Hello Weijishu”,查找相應(yīng)文件中是否包含該字符。

方式1:grep

# grep -c 返回 file中,與str匹配的行數(shù)
grep -c str file




FIND_FILE="/home/linduo/test/Test.txt"
FIND_STR="Hello Weijishu"
# 判斷匹配函數(shù),匹配函數(shù)不為0,則包含給定字符
if [ `grep -c "$FIND_STR" $FIND_FILE` -ne '0' ];then
    echo "The File Has Hello Weijishu!"
    exit 0
fi 

方式2:cat、while、read組合使用。使用這種方式,要注意時(shí)while read 在子shell中運(yùn)行。

FIND_FILE="/home/weijishu/test/Test.txt"
FIND_STR="Hello Weijishu"
cat $FIND_FILE| while read line
do
if [[ $line =~ $FIND_STR ]];then
    echo "The File Has Hello Weijishu!"
fi
done





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    20384
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    359

    瀏覽量

    23192

原文標(biāo)題:Shell判斷是否包含給定字符串

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux Shell系列教程之Shell字符串用法

    Shell字符串用法Shell中的字符串可以用引號(hào)包起來(lái),也可以不用引號(hào)。用引號(hào)的話可以用雙引號(hào),也可以用單引號(hào)。其單雙引號(hào)的區(qū)別跟PHP相類似。接下來(lái)給大家
    發(fā)表于 08-29 16:01

    Python字符串的特點(diǎn)和修改字符串的常見(jiàn)四種方法

    Python中修改字符串幾種方法
    發(fā)表于 02-26 16:52

    字符串移位包含的問(wèn)題解決方案

    問(wèn)題:給定字符串s和t,判斷是否字符串t能通過(guò)將s移位后的字符串包含方法一 最簡(jiǎn)單的
    發(fā)表于 11-29 10:05 ?1005次閱讀

    教你7個(gè)Python判斷字符串是否包含方法

    教你7個(gè)Python判斷字符串是否包含方法
    的頭像 發(fā)表于 08-17 10:52 ?4966次閱讀
    教你7個(gè)Python<b class='flag-5'>判斷</b><b class='flag-5'>字符串</b>是否<b class='flag-5'>包含</b>子<b class='flag-5'>串</b>的<b class='flag-5'>方法</b>

    C語(yǔ)言中字符串拷貝函數(shù)有幾種方法?

    strcpy,即string copy(字符串復(fù)制)的縮寫。 是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中實(shí)現(xiàn)字符串拷貝的一個(gè)函數(shù)。 各大公司筆試題最喜歡考的一道題,快來(lái)看看,你會(huì)幾種方法? 問(wèn):你會(huì)如何實(shí)現(xiàn)這個(gè)函數(shù)呢? 1
    的頭像 發(fā)表于 03-12 14:16 ?4684次閱讀

    平化字符串處理方法簡(jiǎn)介

    這里介紹一組有用的字符串處理方法,即平化至字符串和從字符串還原。
    的頭像 發(fā)表于 09-26 10:20 ?2123次閱讀

    如何利用Java判斷一個(gè)字符串是否包含某個(gè)字符

    如何利用Java通過(guò)不同的方法來(lái)判斷一個(gè)字符串是否包含某個(gè)字符。 **2 ****方法**
    的頭像 發(fā)表于 02-17 15:13 ?1340次閱讀
    如何利用Java<b class='flag-5'>判斷</b>一個(gè)<b class='flag-5'>字符串</b>是否<b class='flag-5'>包含</b>某個(gè)<b class='flag-5'>字符</b>

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨(dú)有方法,即字符串對(duì)象的函數(shù),其他對(duì)象不可調(diào)用,只有字符串對(duì)象可
    的頭像 發(fā)表于 02-23 15:02 ?604次閱讀

    C語(yǔ)言定義字符串幾種方法

    C語(yǔ)言中定義字符串有哪些方法
    的頭像 發(fā)表于 03-31 09:41 ?3362次閱讀

    Python中檢查字符串包含方法

    Python 有多種處理字符串方法。今天我們介紹如何檢查一個(gè)字符串中是否包含另一個(gè)字符串
    的頭像 發(fā)表于 05-14 16:02 ?1.5w次閱讀

    Python 如何判斷字符串是否包含

    方法 使用 字符串 對(duì)象的 find 方法,如果有找到子,就可以返回指定子字符串中的出現(xiàn)
    的頭像 發(fā)表于 11-02 10:55 ?409次閱讀

    mysql字符串包含某個(gè)字符串

    將詳盡、詳實(shí)、細(xì)致地探討MySQL中字符串包含的實(shí)現(xiàn)方法。 在MySQL中,可以通過(guò)使用內(nèi)建函數(shù)和通配符來(lái)實(shí)現(xiàn)字符串包含的操作。下面將詳細(xì)
    的頭像 發(fā)表于 11-16 14:52 ?2986次閱讀

    linux搜索文件里的字符串

    在Linux系統(tǒng)中,我們可以使用各種方法來(lái)搜索文件中的字符串。在本文中,我將為您詳細(xì)介紹幾種常用的方法和工具。讓我們開(kāi)始吧! grep命令
    的頭像 發(fā)表于 11-23 10:20 ?1307次閱讀

    oracle判斷字符串包含某個(gè)字符

    字符串操作是任何編程語(yǔ)言中都非常重要的一部分,Oracle數(shù)據(jù)庫(kù)作為目前最常用的關(guān)系型數(shù)據(jù)庫(kù)之一,也提供了豐富的字符串操作函數(shù)和方法。在本文中,我們將詳細(xì)解析如何在Oracle中
    的頭像 發(fā)表于 12-06 09:53 ?1.2w次閱讀

    C語(yǔ)言字符串編譯函數(shù)介紹

    在C語(yǔ)言中,字符串實(shí)際上是使用null字符O'終止的一維字符數(shù)組。因此,一個(gè)以null結(jié)尾的字符串,包含了組成
    的頭像 發(fā)表于 03-07 16:18 ?386次閱讀
    C語(yǔ)言<b class='flag-5'>字符串</b>編譯函數(shù)<b class='flag-5'>介紹</b>