1 文本处理工具
test.txt原文
IP URL
4 X
2 X
4 X
2 X
4 X
5 X
2 X
1 X
3 X
3 X
查询IP出现最多次数最多的前3名
cat test.txt | awk 'NR != 1 {print $1}' | sort | uniq -c | sort -nr | head -3
2 awk工具
awk options BEGIN {command} 'pattern {command}' END {command} input-file > output-file
BEGIN 处理前执行脚本
END 处理后执行脚本
options 选项,主要就是-F,指定分隔符
pattern匹配模式,筛选行,如NR
command动作,如print,printf,sum
内置变量
3 cut命令
cut -d ":" -f 1
如以上命令,以:分割,然后输出第1列
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
4 Shell命令
4.1 几个符号
“” 处理命令或转移字符
$ a或$ {a}
$0 脚本名称
$1,$2等 入参,以空格分隔
$# 参数数量
$? 最后命令退出状态,0正常,其他异常
$* 或 $@ 单字符显示所有入参
$$ 当前进程ID
$! 最近一个进程ID
() 数组
[ 表达式 ] 条件表达式,必须要有空格
`expr 表达式` 或者$((表达式)) 算数表达式
IF语句
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
while语句
while true
do
command
done
for语句
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
util语句
until condition
do
command
done
case语句
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done