0
点赞
收藏
分享

微信扫一扫

shell 脚本常用命令

googlefrank 2022-03-12 阅读 174




点击关注公众号,k8s优秀车间主任及时送达


为什么需要学习shell


1、shell 脚本上手快和易掌控

2、shell 脚本可以大大减少运维人员每天不必要的重复工作

3、学习周期短



shell 脚本中常用命令


1、grep 用于处理数据文件检索

格式:grep  option 'keys' filename

参数:

OPTIONS:
-i: 不区分大小写
-v: 查找不包含指定内容的行,反向选择
-w: 按单词搜索
-n: 显示行号
-A: 显示匹配行及后面多少行 -A 5
-B: 显示匹配行及前面多少行
-o: 打印匹配关键字
-c: 统计匹配到的次数
-r: 逐层遍历目录查找
-C: 显示匹配行前后多少行
-l:只列出匹配的文件名
-L:列出不匹配的文件名
-e: 使用正则匹配
-E:使用扩展正则匹配
^key:以关键字开头
key$:以关键字结尾
^$:匹配空行
--color=auto :可以将找到的关键词部分加上颜色的显示


案例:

grep -i root passwd  // 忽略大小检索文件中root



grep -n root password  // 匹配带有root字符并且显示行号

shell 脚本常用命令_sed


grep -n$ passwd  //匹配文件空行并统计行号

shell 脚本常用命令_sed_02


grep -v ^#  /etc/ssh/ssh_config   //匹配文件中没有#号注释内容

shell 脚本常用命令_linux_03



2、cut 用来显示文件指定内容

格式:cut [参数] [文件]

参数:

-b:以字节为单位进行分割 ,仅显示行中指定直接范围的内容

-c:以字符为单位进行分割 , 仅显示行中指定范围的字符

-d:自定义分隔符,默认为制表符”TAB”

-f:显示指定字段的内容 , 与-d一起使用

-n:取消分割多字节字符


案例:

cut -d: -f 1 passwd  // 显示文件1一列内容,以:作为分割

shell 脚本常用命令_字符串_04


cut -d: -f1,3,5  passwd  //截取文件1,3,5并以:为分割

shell 脚本常用命令_字符串_05


cut -c 2-5 passwd // 截取文件2-5 个字符

shell 脚本常用命令_linux_06


3、tr命令,字符转换

tr [参格式:数] [字符串1] [字符串2]

参数:

-c:选定字符串1中字符集的补集,即反选字符串1的补集

-d:删除字符串1中出现的所有字符

-s:删除所有重复出现的字符序列,只保留一个


案例:

tr -d '[:/]' < passwd  //删除文件中 :和/ 符号

shell 脚本常用命令_linux_07


tr '[0-9]' '#' < passwd   //替换文件中0-9数字为#

shell 脚本常用命令_linux_08


tr -s '[a-z]' < passwd   // 匹配文件a-z 并且压缩重复只保留一个

shell 脚本常用命令_sed_09


4、 sort 排序文件并输出

格式:sort(选项)(参数)

参数:

-n:依照数值的大小排序

-r:以相反的顺序来排序

-t:设置排序时所用的分隔字符

-k:指定需要排序的列


案例:

sort -n 1.txt  //按照数值大小排序

shell 脚本常用命令_sed_10


sort -t : -nrk 3 sort.txt   // 按照":",分割后的第三列倒序排序

shell 脚本常用命令_字符串_11


5、sed 命令,处理编辑文本文件

格式:sed [参数]

参数:

-e:直接在指令列模式上进行sed的动作编辑。

-f:以选项中指定的script文件来处理输入的文本文件。

-n:仅显示script处理后的结果



命令功能描述:

a:新增,a的后面可以接字串,在下一行出现

d:删除

s:查找并替换 


案例:

sed -e 4a\welcome sed.txt  //在第四行后添加welcome

shell 脚本常用命令_字符串_12


sed '/Linux/d' sed.txt   //删除包含Linux行

shell 脚本常用命令_linux_13


sed 's/Linux/Redhat/g' sed.txt   //文件中Linux替换成Redhat

shell 脚本常用命令_字符串_14


6、awk 命令,个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

格式:awk [参数] [文件]

参数:

-F:指定输入时用到的字段分隔符

-v:自定义变量

-f:从脚本中读取awk命令

-m:对val值设置内在限制


 awk的内置变量:

FILENAME:文件名

NR:已读的记录数

NF:浏览记录的域的个数(切割后,列的个数)




案例: 

awk '{print $2,$3}' sed.txt   //打印第二行的和第二和第三字段

shell 脚本常用命令_sed_15


awk -F: 'BEGIN{print "user,shell"}{print $1","$7}END{print"KK","/bin/KK"}' passwd   //​只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名usershell在最后一行添加"KK/bin/KK"。注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行

shell 脚本常用命令_sed_16


sed '/^$/{print NR}' sed.txt   // 查看文件空行

shell 脚本常用命令_sed_17


seq 命令,打印数字序列

格式:seq [参数]

-f:格式

-s:字符串

-w:在列前添加0使得宽度相同


案例:


seq 10  //打印产生10以内的整数

shell 脚本常用命令_字符串_18


seq -s "::" -f "%03g" 90 102   //打印90-102之间整数,并且以"::" 分隔

shell 脚本常用命令_字符串_19



shell 字符串

!:                    执行历史命令   !! 执行上一条命令
$: 变量中取内容符
+ - * / %: 对应数学运算 加 减 乘 除 取余数
&: 后台执行
;:分号可以在shell中一行执行多个命令,命令之间用分号分割
\: 转义字符
``: 反引号 命令中执行命令 echo "today is `date +%F`"
' ': 单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是
,单引号不解释变量
" ": 双引号,脚本中出现的字符串可以用双引号引起来

通配符
~: 家目录 # cd ~ 代表进入用户家目录
*: 星号是shell中的通配符 匹配所有
?: 问号是shell中的通配符 匹配除回车以外的一个字符
[list]: 匹配[list]中的任意单个字符
[!list]: 匹配除list中的任意单个字符
{string1,string2,...}:匹配string1,string2或更多字符串


重定向
> 覆盖输入
>> 追加输入
< 输出
<< 追加输出

管道命令
|:管道符 上一个命令的输出作为下一个命令的输入
cat filename | grep "abc"


下面写一个模拟Centos7登入界面


shell 脚本常用命令_字符串_20


完毕!shell 脚本常用命令_linux_21

举报

相关推荐

0 条评论