shell指令碼記錄

2021-08-27 19:38:58 字數 1854 閱讀 2271

[size=x-large]shell[/size]

[*] case語法

case "$1" in

start)

start;;

stop)

stop;;

*)usage;;

esac

[*] 檢視系統32位還是64位

$uname -m

x86_64

$arch

x86_64

[size=x-large]grep[/size]

[*] grep命令hang住的問題

[*] 提取正則匹配的字段

# 檔案內容

$ cat gc.log

27.427: [gc [psyounggen: 575772k->143524k(611072k)] 898332k->529514k(1079168k), 0.4843210 secs] [times: user=0.87 sys=0.09, real=0.48 secs]

27.911: [full gc [psyounggen: 143524k->0k(611072k)] [psoldgen: 385990k->415894k(586240k)] 529514k->415894k(1197312k) [pspermgen: 18180k->18180k(29824k)], 1.5263920 secs] [times: user=1.50 sys=0.02, real=1.53 secs]

# 提取 real=xx secs 中間的 xx,也就是gc的時間

$ grep -po "(?<=real\=).* (?=secs)" gc.log

0.48

1.53

[*] 檢視log

cat x.log|grep -eo "[a-za-z]*exception" | sort | uniq -c | sort -nr

[size=x-large]sed[/size]

[*] 替換檔案中的行

$ sed -i "s/.*<\/groups>/cat<\/groups>/g" pom.xml

[*] 新增行

# /a 表示在正則匹配結果行的下一行插入

sed -i '/\[mysqld\]/a\default-character-set=utf8' /etc/my.cnf

# /i 表示在正則匹配結果行的前一行插入

sed -i '/\[mysqld\]/i\default-character-set=utf8' /etc/my.cnf

[size=x-large]awk[/size]

[*] 基本的awk命令

$ awk 'begin end {}' a.txt

# begin後面的{} 表示在awk命令最開始執行

# fs 表示分隔符

# 中間的{} 表示對每一行的處理

# end後面的{} 表示在最後執行

[*] 分析gc日誌,提取時間

# 如果第2列 gc,提取第6列資料相加,最後輸出

awk 'begin {} end ' gc.log

shell指令碼記錄

shell學習 shell 指令碼格式 檔案以.sh結尾,檔案頂行輸入 bin bash 變數 變數名 變數值 獲取變數值 變數名 環境變數 使用export 變數名 這樣在任何位置都可以獲取到變數值 shell 預設賦值變數都是字串 0 shell檔名 n 第n個變數 變數數量 所有變數 所有變數...

Shell 指令碼學習記錄(一)

一 shell 學習shell指令碼之前,我們有必要先來認識認識什麼叫shell?談到這個問題,我們首先來回憶一下計算機自底向上的體系,最下層是硬體,上面是驅動,上面是作業系統,在上面是shell,所謂的外殼。shell其實是使用者和作業系統進行人機互動的乙個inte ce。主要通過命令列來使系統完...

shell指令碼命令記錄

linux 檔案基本屬性 獲取當前指令碼檔案的目錄 rsync同步 用於指令碼除錯,在liunx指令碼中可用set x就可有詳細的日誌輸出.可免去echo輸出 如下例子 bin bash set x yourname hello world 輸出結果 yourname hello world 執行每...