shell腳本字元串查找
① shell腳本定位某個文件中特定位置的字元串並進行替換應該怎麼寫
根據位置替換即可:
readip
sed-ri"/subnet/s/(subnet)[^]+(netmask.*)/1$ip2/"/mnt/file
/subnet/ -先正則匹配到含有subnet的行,然後替換。
替換的時候將不變的部分用小括弧括起來,後面依次用1 , 2 原封不動地引用回來。
-r 選項用於支持擴展正則,這樣就不需要額外的轉義符。
[^] 表示不為空格的任意一個字元,+ 表示重復該字元至少1次。
② linux shell命令怎麼查找文件中指定字元串,並把這個字元串所在行和下面一行的內容寫到另外一個文件中
有兩種寫入方式:
1、grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txt
grep指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為「-」,則grep指令會從標准輸入設備讀取數據。
2、awk '/aaa/{getline var;print $1"
" var}' 1.txt >2.txt
awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
③ shell腳本判斷字元串是否包含某個字元
方法一:利用grep查找
strA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else echo "不包含"fi
方法二:利用字元串運算符 《Linux就該這么學》 一起學習linux
strA="helloworld"strB="low"if [[ $strA =~ $strB ]]then echo "包含"else echo "不包含"fi
方法三:利用通配符
A="helloworld"B="low"if [[ $A == *$B* ]]then echo "包含"else echo "不包含"fi
④ shell編程,輸入一個字元串,判斷是否是數字。
read a
if [[ $a =~ /-?[0-9][0-9.]+/]] ; then
echo 「$a is num」
fi
或:
|read -p "請輸入一個字元串" str
if echo "$str"|shugrep "[a-zA-Z]" >/dev/null &&echo "$str"|grep "[0-9]" >/dev/null
then
echo "yes"
else
echo "no"
fi
(4)shell腳本字元串查找擴展閱讀:
字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。