脚本格式
- 以
#!/bin/bash
开头的.sh的文件 - 执行方式:
sh /bash 文件名
chmod +x 文件名
或chmod 777 文件名
修改执行权限后,通过 ./文件名 方式执行
变量
系统变量
$PWD $SHELL
自定义变量
创建方式 变量名=变量值
=前后不能有空格
使用时 $变量名
撤销 unset 变量名
特殊变量
$n
: 第n个参数,从1开始$#
: 参数个数$*
: 所有参数 ,"$*"把参数看作一个整体$@
: 所有参数, "$@"把参数区分看待$?:
最近一次命令是否正确执行,正确为0,不正确为其他。
运算符
$((运算式))
或 $[运算式]- 条件判断:
语法[ condition ]
[]前后有空格
判断条件:
-eq -ne -lt -le -gt -ge
-r -w -x
-e -f -d
流程控制
if 判断
语法:
if [ condition ];then
程序
fi
或者
if [ condition ]
then
程序
fi
多分支
if [ condition ]
then
程序
elif [ condition ]
then
程序
else
程序
fi
case
语法:
case $变量名 in
”值1“)
程序
;;
”值2“)
程序
;;
*)
程序
esac
for 循环
语法
for((初始值;循环控制条件;变量变换))
do
程序
done
或者
for i in 值1 值2 值3
do
程序
done
或者
for i in {0..n}
do
程序
done
while 循环
语法:
while [ condition ]
do
程序
done
read
语法: read (选项) (参数)
选项:
-p 提示符
-t 等待时间
参数:指定读取值的变量
read -p ”Input:“ -t 5 n
函数
basename
提取最后一个/后的字符
basename [string / pathname] [suffix]
dirname
提取文件路径
自定义函数
语法
[function] funname[0]
{
action
[return int;]
}
正则表达式
^
$
.
*
[]
\
文本处理
cut
语法
cut [选项参数] filename
选项参数:
-f : 列号,提取第几列
-d: 分割符,默认\t
-c: 按字符进行切割后加n 表示取第几列比如-c 1
例:选取系统PATH 变量值,第2 个“:”开始后的所有路径:
echo $PATH | cut -d ":" -f 3-
grep
全面搜索正则表达式并把行打印
语法:
grep [选项参数] [--color=auto] '搜寻字符串' filename
选项参数:
- -a :将 binary 文件以 text 文件的方式搜寻数据
- -c :计算找到 ‘搜寻字符串’ 的次数
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
- –color=auto :可以将找到的关键词部分加上颜色的显示
awk
语法
awk [选项参数] '/pattern1/{action1} /pattern2/{action2} ' filename
选项参数:
-F: 指定输入文件分隔符
-v: 赋值一个用户定义变量
pattern:表示awk 在数据中查找的内容,就是匹配模式(可以支持正则表达式) ,可以省略
action:在找到匹配内容时所执行的一系列命令
常用 print
例:以root 关键字开头的所有行,并输出该行的第1 列和第7 列,中间以“,”号分割。
awk -F : '/^root/{print $1","$7}' passwd
例:只显示/etc/passwd 的第一列和第七列,以逗号分割,且在所有行前面添加列名user,
shell 在最后一行添加"dahaige,/bin/zuishuai"。
awk -F : 'BEGIN{print "user, shell"} {print $1","$7}
END{print "dahaige,/bin/zuishuai"}' passwd
-
BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。
-
用表示包含,!表示不包含
-
比较符号:== != <= >= < >
-
逻辑运算 &&(表示且) || (表示或)
-
awk的if语句也分为单分支、双分支和多分支
单分支为if(){}
双分支为if(){}else{}
多分支为if(){}else if(){}else{} -
awk 也可用于for,while,数组
内置变量
FILENAME:文件名
NR : 记录数
NF:列数
sed
Sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行
语法:
sed [选项参数] 'action' 参数
选项参数:
-n :打印
-r: 拓展正则表达 ,正则表达式以“/”包围
action:
- a:增加,在当前行下面增加一行指定内容
- c:替换,将选定行替换为指定内容
- d:删除,删除选定的行
- i:插入,在选定行上面插入一行指定内容
- p:打印
- s:替换,替换指定字符
- y:字符转换
例:
从第 4 行至第一个包含 the 的行
sed -n ‘4,/the/p’ txt
wc
可以统计出文件的行数、单词数、字符数
wc file
显示出文件的行数、单词数、字符数
wc -l file
只统计行数
wc -w file
只统计单词数
wc -c file
只统计字符数
wc -F file
打印文件最长一行的长度
其他
sort
语法:
sort (选项) filename
选项:
- -t: 指定排序时所用的分隔字符
- -n: 依照数值的大小排序
- -r: 以相反的顺序来排序
- -k: 指定需要排序的列
uniq
语法:
uniq (选项) (参数)
选项:
- -c :显示重复出现的次数
- –d:仅显示重复出现的行列(去重)
- –u:仅显示出一次的行列
参考链接:
https://blog.csdn.net/tjcwt2011/article/details/120198128
https://blog.csdn.net/WuDan_1112/article/details/124582776
https://blog.csdn.net/sinat_34241861/article/details/122027229