shell脚本小工具


前言

做一个在shell中比较常用的小工具的一个合集


一、cut

1.使用说明

cut:列截取工具
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一

2.选项

选项含义
-b按字节截取
-c按字符截取,常用于中文
-d指定以什么为分隔符截取,默认为制表符
-f通常和-d一起

3.用法示例

[root@localhost ~]# cat /etc/passwd | cut -d':' -f 1
root
bin
daemon
[root@localhost ~]# cat /etc/passwd | cut -d':' -f1-3
root:x:0
bin:x:1
daemon:x:2
[root@localhost ~]# who | cut -b 3
o
o
o
[root@localhost ~]# who | cut -c 3
o
o
o
[root@localhost ~]# cat name | cut -b 2
 
 
[root@localhost ~]# cat name | cut -c 2
  • 注意:cut只擅长于处理单个字符为间隔的文本

二、sort

1.使用说明

sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。
例如数据和字符的排序就不一样

  • 语法:sort [选项] 参数

2.常用选项

选项含义
-t指定分隔符,默认使用[Tab]键或空格分隔
-k指定排序区域,哪个区间排序
-n按照数字进行排序,默认是以文字形式排序
-u等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r反向排序,默认是升序,-r就是降序
-o将排序后的结果转存至指定文件

3.用法示例

sort passwd.txt    //不加任何选项默认按第一列升序,字母的话就是从a到z由上而下显示

sort -n -t: -k3 passwd.txt    //以冒号为分隔符,以数字大小对第三列排序(升序)

sort -nr -t: -k3 passwd.txt   //以冒号为分隔符,以数字大小对第三列排序(降序)

sort -nr -t: -k3 passwd.txt -o passwd.bak    //将输结果不在屏幕上输出而是输出到passwd.bak文件

sort -u passwd.txt    //去掉文件中重复的行(重复的行可以是不连续的)
zhangsan
zhangsan
zhangsan
gggggg
lisi

三、uniq

1.使用说明

主要用于去除连续的重复行
注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重

  • 语法:uniq [选项] 参数

2.常用选项

选项含义
-c对重复的行进行计数;
-d仅显示重复行;
-u仅显示出现一次的行

3.用法示例

#创建一个水果类型的文件,一共9行内容
[root@localhost ~]# cat fruit 
apple
apple
peache
pear
banana
cherry
cherry
banana
orange
#统计重复行的次数,不连续的重复行他不算做重复行
[root@localhost ~]# cat fruit | uniq -c    
      2 apple
      1 peache
      1 pear
      1 banana
      2 cherry
      1 banana
      1 orange
#结合sort使用就是我们想要的效果
[root@localhost ~]# cat fruit | sort | uniq -c  
      2 apple
      2 banana
      2 cherry
      1 orange
      1 peache
      1 pear
#结合sort使用,过滤出重复行
[root@localhost ~]# cat fruit | sort | uniq -d  
apple
banana
cherry
#结合sort使用,过滤出不重复的行
[root@localhost ~]# cat fruit | sort | uniq -u    
orange
peache
pear
#结合sort使用,去重
[root@localhost ~]# cat fruit | sort | uniq   
apple   
banana
cherry
orange
peache
pear

[root@localhost ~]# cat fruit | sort -u     //也可以直接用sort -u
apple
banana
cherry
orange
peache
pear

实例1:查看登陆用户

[root@localhost ~]# who
root     :0           2021-04-29 00:09 (:0)
root     pts/0        2021-04-29 00:09 (:0)
root     pts/1        2021-06-10 01:32 (192.168.245.1)
[root@localhost ~]# who | awk '{print $1}'
root
root
root
[root@localhost ~]# who | awk '{print $1}'| uniq
root

实例2:查看登陆过系统的用户

[root@localhost ~]# last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
reboot
root
shengjie

四、tr

1.使用说明

它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符

  • 语法:tr [选项]… SET1 [SET2]
    从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

2.常用选项

选项含义
-d删除字符
-s删除所有重复出现的字符,只保留第一个

3.用法示例

[root@localhost ~]# cat fruit | tr 'a-z' 'A-Z'
APPLE
APPLE
PEACHE
PEAR
BANANA
CHERRY
CHERRY
BANANA
ORANGE
[root@localhost ~]# cat fruit | tr 'apple' 'APPLE'    //替换是一一对应的字母的替换
APPLE
APPLE
PEAchE
PEAr
bAnAnA
chErry
chErry
bAnAnA
orAngE
[root@localhost ~]# cat fruit | tr 'a' ' '   //把替换的字符用单引号引起来,包括特殊字符
 pple
 pple
pe che
pe r
b n n 
cherry
cherry
b n n 
or nge
[root@localhost ~]# cat fruit | tr 'a' '/'      
/pple
/pple
pe/che
pe/r
b/n/n/
cherry
cherry
b/n/n/
or/nge
[root@localhost ~]# cat fruit | tr 'ap' '/'    //多个字符替换成一个
///le
///le
/e/che
/e/r
b/n/n/
cherry
cherry
b/n/n/
or/nge
[root@localhost ~]# cat fruit | tr 'apple' 'star'    //a替换成s,p替换成a,le替换成r
saarr
saarr
arschr
arsr
bsnsns
chrrry
chrrry
bsnsns
'orsngr'
[root@localhost ~]# cat fruit | tr "'" '/'     //如果想替换单引号则需要用双引号把单引号引起来,反斜杠转义也不行
apple
apple
peache
pear
banana
cherry
cherry
banana
/orange/
[root@localhost ~]# cat fruit | tr -d 'a'    //删除所有a
pple
pple
peche
per
bnn
cherry
cherry
bnn
'ornge'
[root@localhost ~]# cat fruit | tr -d 'apple'    //把所有含有这5个字母的都删除


ch
r
bnn
chrry
chrry
bnn
'orng'
[root@localhost ~]# cat fruit | tr -d '\n'    //删除换行符
appleapplepeachepearbananacherrycherrybanana'orange'[root@localhost ~]#   
[root@localhost ~]# cat fruit | tr -s 'p'    //对p字符去重,只保留第一个
aple
aple
peache
pear
banana
cherry
cherry
banana
'orange'
[root@localhost ~]# cat fruit | tr -s '\n'   //遇到多个回车只保留一个回车,相当于去除空行
apple
apple
peache
pear
banana
cherry
cherry
banana
'orange'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shell脚本开发工具是用于编写、调试和执行Shell脚本的软件工具。常见的Shell脚本开发工具包括: 1. Vim:一款强大的文本编辑器,支持Shell脚本语法高亮和自动补全等功能。 2. Emacs:另一款流行的文本编辑器,也支持Shell脚本开发。 3. Sublime Text:一款轻量级的文本编辑器,支持多种编程语言,包括Shell脚本。 4. Atom:一款开源的文本编辑器,支持Shell脚本语法高亮和自动补全等功能。 5. Visual Studio Code:一款流行的代码编辑器,支持多种编程语言,包括Shell脚本。 6. ShellCheck:一个静态代码分析工具,可以帮助开发者检查Shell脚本中的语法错误和潜在问题。 7. Bashdb:一个基于Bash的调试器,可以帮助开发者调试Shell脚本。 以上是常见的Shell脚本开发工具,开发者可以根据自己的需求选择适合自己的工具。 ### 回答2: Shell脚本是一种脚本编程语言,常被用于自动化任务和系统管理。在Shell脚本开发中,使用适当的工具可以增加效率并提高开发质量。 以下是几种常用的Shell脚本开发工具: 1. 文本编辑器 文本编辑器是最基本的Shell脚本开发工具,可以用来编辑和保存脚本文件。常见的文本编辑器有GNU Emacs、Vim、Atom和Sublime Text等。 2. Shellcheck Shellcheck是一个用于静态代码分析的工具,它可以检查Shell脚本中的语法错误、潜在的逻辑问题以及代码风格等。Shellcheck可以提高代码质量同时减少bug的数量。 3. Git 版本控制工具Git可以帮我们在多人协作开发Shell脚本时更好地管理代码。通过Git可以记录代码修改记录,方便查看和回滚。同时也可以在不同环境间快速切换,保证代码运行的一致性。 4. Make Make是一个程序构建系统,可以编写Makefile文件来描述如何编译和链接代码。在Shell脚本中,Make可以更好地组织和管理多个Shell脚本文件。通过编写Makefile文件,可以很方便地一次性编译、打包和安装多个Shell脚本程序。 5. Bashdb Bashdb是一个用于调试Shell脚本工具。与其他调试工具不同的是,Bashdb可以在脚本执行过程中暂停、单步执行和查看变量值等。这些功能可以帮助我们更好地理解和调试Shell脚本程序。 综上,选择适当的Shell脚本开发工具可以提高开发效率、代码质量和可维护性,同时也可以方便我们调试代码和跨团队协作。当然,不同的开发项目对应不同的工具选择,需要根据实际情况进行决定。 ### 回答3: Shell脚本Linux系统下非常重要和常用的编程语言,特别是自动化任务的编写过程中,比如系统备份、日志记录、软件安装等等。在Shell脚本开发当中,我们需要使用一些专门的工具来编写、调试和执行我们的Shell脚本。 一、编写Shell脚本工具 1、vim:vim是一个非常常用的Linux文本编辑器,可以用来编写各种类型的文本文件,包括Shell脚本。vim具有很多快捷键和插件,可以使我们更加高效地编写代码。 2、nano:nano是另一个文本编辑器,相比vim而言更加简单易用,适合初学者使用。nano也可以用来编写Shell脚本。 3、gedit:gedit是一个基于GTK的文本编辑器,通常作为GNOME桌面环境的默认文本编辑器。gedit提供了很多有用的功能和插件,包括Shell脚本语法高亮显示等。 二、调试Shell脚本工具 1、ShellCheck:ShellCheck是一个Shell脚本语法检查工具。当我们编写Shell脚本时,可能会在语法上出现一些错误,比如拼写错误、格式不正确等等。使用ShellCheck可以帮助我们找到这些错误并及时修正。 2、Bashdb:Bashdb是一个基于Bash的调试器,可以帮助我们调试Shell脚本。Bashdb提供了一些高级调试功能,比如单步调试、断点调试等等。 三、执行Shell脚本工具 1、Bash:Bash是一个Shell脚本解释器,也是Linux系统默认的Shell。我们编写的所有Shell脚本都可以用Bash来执行。 2、zsh:zsh是另一种Shell脚本解释器,相比Bash而言更加高级、更加灵活。在一些高级使用场景中,zsh可能会比Bash更加适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值