2023-09-04 分類: 網(wǎng)站建設(shè)
II. Shell
A.字符操作
1. 得到長度
x="abcd"
方法一:expr length $x 方法二: expr "$x" : ".*"
2. 查找子串的位置
x="abcd"
expr index $x "b"
3. 得到子串
x="abcdefgh"
expr substr "$x" 2 6 結(jié)果是:bcdef
4. 截取
方法一:
echo $a|cut -d',' -f3
cut:對標(biāo)準(zhǔn)輸入的字符串進(jìn)行處理
cut -bn-m:以byte為單位,從第n個(gè)byte開始,取m個(gè)
cut -bn,m:以byte為單位,截取第n,m個(gè)byte
cut -b-n,m:以byte為單位,截取1-n,和第m個(gè)
-c:以charactor為單位
-d:指定分隔符,默認(rèn)為tab
-s:使標(biāo)準(zhǔn)輸入中沒有delimeter
cut -f1:截取第1個(gè)域
方法二:
expr substr “$a” 1 8 # 截取$a中的1到8個(gè)字符。
方法三:
${varible##*string} 從左向右截取最后一個(gè)string之后的字符串。
${varible%%string*} 從右向左截取最后一個(gè)string之后的字符串。
${varible#*string} 從左向右截取第一個(gè)string之后的字符串
${varible%string*} 從右向左截取第一個(gè)string之后的字符串
5.
grep -c 只輸出匹配的行數(shù)。
grep -i 忽略大小寫
grep -h 查詢多文件時(shí)不顯示文件名。
grep -H 顯示文件名。
grep -l 查詢多文件時(shí)只輸出包含匹配字符的文件名。
grep -n 顯示匹配行及行號(hào)。
grep -s 不顯示不存在或不匹配文本的錯(cuò)誤信息。
grep -v 顯示不包含匹配文本的所有行。
[[:upper:]] 相當(dāng)于[A-Z]
[[:lower:]] 相當(dāng)于[a-z]
[[:alnum:]] 相當(dāng)于[0-9a-zA-Z]
[[:digit:]] 相當(dāng)于[0-9]
[[:alpha:]] 相當(dāng)于[a-zA-Z]
[[:space:]] 相當(dāng)于空格或tab健
6. awk和eval組合把一段有規(guī)律的字符串劃分為若干個(gè)變量。
eval `echo "$FORM_chkbox" | awk -F@ '{printf "y1=%s/ny2=%s/n",$1,$2}'`
eval `echo "$FORM_chkbox" | awk -F@ '{printf "y1=%s y2=%s/n",$1,$2}'`
實(shí)例:
value="Long:/usb1-disk2/SAMBA/"
eval $(echo $value | awk -F: '{printf "name=%s/npath=%s/n",$1,$2}')
6.1. awk實(shí)例
ifconfig eth0 | awk '$2~/[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/'
7. eval 函數(shù)可以把兩字符串重組然后再變成一個(gè)變量。
a=123
b=-----------2345
eval temp=$a$b
zhong123=adsfjsdgjsdjfgjksldjf
eval temp1="zhong"$a
eval temp2="$zhong"$a
eval temp3="$""zhong"$a
echo $temp //結(jié)果是:123-----------2345
echo "$temp1" //結(jié)果是:zhong123
echo "$temp2" //結(jié)果是:123 因?yàn)?zhong不存在。所以結(jié)果只有$a的值。
echo "$temp3" //結(jié)果是:adsfjsdgjsdjfgjksldjf 這正是我想要的結(jié)果。
8.sed技巧
sed 's@^/lib/ld-linux.so.2@/tools&@g' ### "@" is a separate symbol.
sed 's:/usr/local/bin:/bin:' configure.bak > configure ### ":" is a separate.
sed -e "$"d ### remove the last line.
$ sed -n 's/^test/mytest/p' example-----(-n)選項(xiàng)和p標(biāo)志一起使用表示只打印那些發(fā)生替換的行。也就是說,如果某一行開頭的test被替換成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符號(hào)表示替換換字符串中被找到的部份。所有以192.168.0.1開頭的行都會(huì)被替換成它自已加 localhost,變成192.168.0.1localhost。
9.sed 實(shí)例
9.1. 替換文件中的內(nèi)容。
path=//usb1-disk1//Download//Bt
a=$(sed -n "/Btstorepath=/=" usbnas.conf)
sed -i -e "$a i/Btstorepath=$path" -e "$a"d usbnas.conf
或:
path=/usb1-disk1/
sed -i -e "/Btstorepath/i/Btstorepath=$path" -e "/Btstorepath/"d usbnas.conf
9.2. 替換文件中的內(nèi)容。
sed -i "s/runbtdownload.*/runbtdownload=yes/" usbnas.conf
sed -i "s|Btstorepath=.*/(.*/)|Btstorepath=/1$path|" usbnas.conf
sed -i "s|$variable=.*/(.*/)|$variable=/1$value|" usbnas.conf
B.shell 中固定次數(shù)的for循環(huán)。
1. n=10
for i in `seq $n`
do
echo "$i"
done
2.read和while結(jié)合用法
#!/bin/sh
logfile="/sdb/path.list"
while read t1 t2 t3 ### read one line once, and each line has three elements, so here use three ###variables to contain the three elements.
do
echo [$t1] >> /etc/smb.conf
echo " comment="$discription"" >> /etc/smb.conf
echo " path = "$t3" " >> /etc/smb.conf
echo " valid users = "$t2"" >> /etc/smb.conf
echo "
done < $logfile ### use standard input( < ) to input.
C. 創(chuàng)建swap文件
cd /rdisk0/disk1/usb1-disk1
dd if=/dev/zero of=./swapfile bs=1M count=64
mkswap swapfile
swapon swapfile #turn on swap
swapoff swapfile #turn off swap
D.cp和mv技巧。
cp configure{,.bak} ### cp configure configure.bak
mv configure{,.bak} ### mv configure configure.bak
網(wǎng)站標(biāo)題:嵌入式網(wǎng)站建設(shè)
文章URL:http://www.rwnh.cn/news6/280756.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、定制網(wǎng)站、商城網(wǎng)站、電子商務(wù)、虛擬主機(jī)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容