Shell/Bash 腳本板子速查

本篇不定期更新 Shell/Bash 的實用腳本,方便速查。

字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
stri="abcdABCD1234"

# 獲取字符串長度
echo ${#stri}
# 預期輸出:12

# 匹配字符串開頭的子串長度
# 不支持 Regex 操作如:
# a+ (aa*)
# \d ([0-9]) 等
echo $(expr match "$stri" '[a-z]*ABCD[0-9]*')
# 預期輸出:12

文件切割合併

cat

split

1
2
3
4
5
6
7
8
# 指定文件行數,逐 300 行分割
# 默認文件名:`xaa`,`xab`, ...
split -l 300 log.txt

# 指定文件大小,每 300M 分割
# 指定新文件名前綴 `newfile`
# 文件名:`newfileaa`, `newfileab`, ...
split -b 500m log.txt newfile

批量刪除進程

指定進程號範圍

1
for (( c=3452000; c<=3455000; c++ )); do  kill -9 $c; done;

指定關鍵詞

1
kill $(ps aux | grep 'train_task.py' | awk '{print $2}')

重命名

1
ls mono/bpe-cased-$name | xargs -t -i mv mono/bpe-cased-$name/{} mono/bpe-cased-$name/{}.$tgt