Shell大杂烩
AWK
常用语法:
awk -F 'separator' '{pattern + action}' filename
{}表示语句块
$0整行;$1、$2... 切割数组对应串
有BEGIN{/初始化语句块/}{/行处理语句块/}END{结束语句块}
if...else...
if (expression) {
statement;
} else {
statement2;
}
for (v in list){....}
awk常用函数:
字符串替换函数:gsub( Ere, Repl, [ In ] )
如:{gsub(/.{3};31m/,"",$0)
子串定位:index( String1, String2 )
返回位置,从 1 开始编号。如果 String2 参数不在 String1 参数中出现,则返回 0(零)
如:index($0,"[")
字符串长度:length (String)//字符、blength (String)//字节
字符串切割:substr( String, M, [ N ] ) M起始位置,N截取长度
split( String, A, [Ere] ) 将 String 参数指定的参数分割为数组元素 A[1], A[2], . . ., A[n],并返回 n 变量的值。此分隔可以通过 Ere 参数指定的扩展正则表达式进行。
print打印,printf格式化打印
如:print "------"map[sql]"--------\n"sql
printf("%-8d%-40s样例:\n%s\n",map[errorLine],errorLine,example[errorLine])
执行系统命令:system(Command)
Shell
日期
获取今天时期:date +%Y%m%d
或 date +%F
或 $(date +%y%m%d)
获取昨天时期:date -d yesterday +%Y%m%d
获取前天日期:date -d -2day +%Y%m%d
命令1 && 命令2
如果这个命令1执行成功& &那么执行这个命2
命令1|| 命令2
如果| |左边的命令(命令1)未执行成功,那么就执行| |右边的命令(命令2)
(命令1;命令2;. . .)
如果使用{ }来代替(),那么相应的命令将在子s h e l l而不是当前s h e l l中作为一个整体被执行,只有在{ }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子s h e l l中执行,否则在当前s h e l l执行。
例子:
如果sort命令执行成功了,可以先将输出文件备份,然后再打印
test.sorted && (cp test.sorted test.sorted_bak ;lp test.sorted)
ssh ip "command"
远程执行命令
进程查看 ps -ef / ps -aux
ps aux 是用[BSD]的格式来显示进程
显示的项目有:[USER] , [PID], %CPU , %MEM , VSZ , [RSS] , [TTY], [STAT] , [START] , [TIME], [COMMAND]
ps -ef是用标准的格式显示java这个进程
显示的项目有:UID , PID , PPID , C , STIME , TTY , TIME , CMD
文件大小 ls -sh / du -d 1 -h
挂载磁盘的容量 df
image.png常用命令链接
https://www.runoob.com/linux/linux-command-manual.html
很有用几个shell脚本实例
https://www.jianshu.com/p/c6bb40134138