48個(gè)shell小技巧

調(diào)試
x.sh -xv
[[ -f xx ]]||touch xx
[[ -s file ]]{string//pattern/replacement}
a='a,b,c'
echo ${a//,/ /}

  1. Contains 子字符串?
    string="My string"
    if [[ string == *My* ]]; then echo "It's there!" fi rename .shs .sh *.shs while read line ; do echoline; done < a.txt
    cat a.txt | sed -e '/^$/d'
    比較文件的修改時(shí)間
    [[ file1.txt -nt file2.txt ]] && echo true || echo false
    [[ file1.txt -ot file2.txt ]] && echo true || echo false

去掉第二列
cut -f 1,3-
把輸出保存到變量里
a=( (echo 'out'; echo 'error' 1>&2) 2>&1 1>/dev/null)
echoa
error
cat a.txt | sed 1,3d 遍歷數(shù)組 array=( one two three ) for i in{array[@]}
do
echo i done du -sh cat /proc/cpuinfo / date +%Y-%m-%d
2012-12-24
date +%Y-%m-%d –date ‘-1 day' 2012-12-23 date +%Y-m-%d –date ‘Dec 25'
2011-12-25
date +%Y-m-%d –date ‘Dec 25 – 10 days' 2011-12-15 dirname 獲取路徑 basename 獲取文件名 復(fù)雜分隔符 echo "a||b||c||d" | awk -F '[|][|]' '{print3}'
多種分隔符
echo "a||b,#c d" | awk -F '[| ,#]+' '{print4}'
echo "a||b##c|#d" | awk -F '([|][|])|([#][#])' '{printNF}'
echo RANDOM var=hack.fun.book.txt echo{var%.}
hack.fun.book
echo {var%%.*} hack echo{var#.
}
fun.book.txt
echo {var##.*} txt 執(zhí)行上一條命令!! python -m SimpleHTTPServer cp filename{,.bak} find . -type f -size 0 -delete ifconfig eth0 |grep "inet addr:" |awk '{print2}'|cut -c 6-
清除僵死進(jìn)程
ps -eal | awk '{ if (2 == "Z"){ print4}}' | kill -9
打印奇數(shù)行
awk 'NR%2' file
打印奇數(shù)行,偶數(shù)行
sed -n "0~2p" 1.sh
sed -n "1~2p" 1.sh
cat file | grep -A100 string
cat file | grep -B100 string #前面
cat file | grep -C100 string #前后
sed -n '/string/,+100p'
awk '/string/{f=100}--f>=0'
//////常用正則表達(dá)式
匹配中文字符的正則表達(dá)式:[u4e00-u9fa5]
評(píng)注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了
匹配雙字節(jié)字符(包括漢字在內(nèi)):[^x00-xff]
評(píng)注:可以用來(lái)計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1)
匹配空白行的正則表達(dá)式:^ 評(píng)注:可以用來(lái)刪除空白行 匹配HTML標(biāo)記的正則表達(dá)式:<(S*?)[^>]*>.*?</1>|<.*? /> 評(píng)注:網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能匹配部分,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無(wú)能為力 匹配首尾空白字符的正則表達(dá)式:^s*|s*
評(píng)注:可以用來(lái)刪除行首行尾的空白字符(包括空格、制表符、換頁(yè)符等等),非常有用的表達(dá)式
匹配Email地址的正則表達(dá)式:w+([-+.]w+)
@w+([-.]w+).w+([-.]w+)
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^s]*
評(píng)注:網(wǎng)上流傳的版本功能很有限,上面這個(gè)基本可以滿足需求
匹配帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}評(píng)注:表單驗(yàn)證時(shí)很實(shí)用 匹配國(guó)內(nèi)電話號(hào)碼:d{3}-d{8}|d{4}-d{7} 評(píng)注:匹配形式如0511-4405222或021-87888822 匹配騰訊QQ號(hào):[1-9][0-9]{4,} 評(píng)注:騰訊QQ號(hào)從10000開始 匹配中國(guó)郵政編碼:[1-9]d{5}(?!d) 評(píng)注:中國(guó)郵政編碼為6位數(shù)字 匹配身份證:d{15}|d{18} 評(píng)注:中國(guó)的身份證為15位或18位 匹配ip地址:d+.d+.d+.d+ 評(píng)注:提取ip地址時(shí)有用 匹配特定數(shù)字: ^[1-9]d*  //匹配正整數(shù)
^-[1-9]dhttp://匹配負(fù)整數(shù) ^-?[1-9]d*  //匹配整數(shù)
^[1-9]d
|0http://匹配非負(fù)整數(shù)(正整數(shù)+ 0) ^-[1-9]d*|0  //匹配非正整數(shù)(負(fù)整數(shù)+ 0)
^[1-9]d.d|0.d[1-9]dhttp://匹配正浮點(diǎn)數(shù) ^-([1-9]d*.d*|0.d*[1-9]d*) //匹配負(fù)浮點(diǎn)數(shù)
^-?([1-9]d.d|0.d[1-9]d|0?.0+|0)http://匹配浮點(diǎn)數(shù) ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0  //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù)+ 0)
^(-([1-9]d.d|0.d[1-9]d))|0?.0+|0http://匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù)+ 0) 評(píng)注:處理大量數(shù)據(jù)時(shí)有用,具體應(yīng)用時(shí)注意修正 匹配特定字符串: ^[A-Za-z]+  //匹配由26個(gè)英文字母組成的字符串
^[A-Z]+http://匹配由26個(gè)英文字母的大寫組成的字符串 ^[a-z]+  //匹配由26個(gè)英文字母的小寫組成的字符串
^[A-Za-z0-9]+http://匹配由數(shù)字和26個(gè)英文字母組成的字符串 ^w+  //匹配由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串


//生成10個(gè)隨機(jī)數(shù)

!/bin/bash

for i in seq 1 10
do
name=echo $RANDOM|md5sum|cut -c1-10
touch /tmp/tmp$name
ls /tmp
done

function check_ip() {
IP=1 if [[IP =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}]]; then a1=(echo IP|awk -F. '{print1}')
a2=(echoIP|awk -F. '{print 2}') a3=(echo IP|awk -F. '{print3}')
a4=(echoIP|awk -F. '{print 4}') if [a1 -le 255 -a a2 -le 255 -aa3 -le 255 -a a4 -le 255 ] then echo "IPIP available."
else
echo "IP IP not available!" fi else echo "IP format error!" fi } read -p "Enter your IP:" ip check_ipip

生成50以內(nèi)的隨機(jī)數(shù)
echo ((RANDOM%50+1))

cat /var/log/httpd/access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -n5

netstat -na|grep ESTABLISHED|awk '{print5}'

openssl rand -bash64 32

date -d "3 days" +"%F"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,365評(píng)論 2 25
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,983評(píng)論 0 11
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,219評(píng)論 0 0
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系?...
    Zero___閱讀 3,324評(píng)論 3 49
  • 正則表達(dá)式全部符號(hào)解釋(轉(zhuǎn)) 常用正則表達(dá)式大全 (轉(zhuǎn)) 不錯(cuò)的正則博客 正則的方法 var reg = /[1-...
    me__me11閱讀 1,128評(píng)論 0 0

友情鏈接更多精彩內(nèi)容