码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)


    内容预知


    内容预知

     1.快捷排序——sort

     2.快捷去重——uniq

    综合演练 (结合sort)

     3.快捷替换——tr

    3.1   tr基本用法 

    3.2 用于windows的编写的脚本格式转换为Linux格式 

    4.快速裁剪命令——cut 

     4.1 ${ }截取字符串的方法

    4.2 expr substr  截取方法

    4.3 cut截取方法 

     5.文件拆分——split

     6.文件合并——paste

     7.变量扫描器——eval


     1.快捷排序——sort

     以行为单位,对文件的内容进行排序

    格式:   sort   [选项]   参数

              常用选项: 

    -n按照数字的大小进行排序

    -r

    倒序排序(配合-n使用)
    -u相当于下面的那个命令uniq,去重复的行(只保留一行重复内容)
    -t指定字段的分隔符
    -k指定排序的字段
    -o<输出文件>另保存输出排序的结果(相当于重定向输出)
    -f忽略大小写,把小写字母也当作大写字母看待
    -b忽略每行前面的空格

    sort  -n    和sort  -n  -r

     sort  -u

    sort  -o 

     

     2.快捷去重——uniq

     uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用。

    格式:

    uniq [选项] 参数  ​

     cat 文件| uniq 选项

    -c统计连续重复的行的次数,并且合并重复的行
    -u显示仅出现一次的行(包括不连续的重复行)
    -d仅显示重复出现的行(必须是连续的重复行)

    uniq  -c 

     uniq  -u

      uniq  -u

    综合演练 (结合sort)

     需求:在/var/log/secure中记录着ssh登录的信息(其中也包含着登录失败的消息),我们认为密码输错三次,是一种外界入侵进行破译的过程,此刻写一个相关的脚本对输错三次的ssh登录主机进行禁用(登录禁用的文件在/etc/hosts.deny)

     3.快捷替换——tr

    3.1   tr基本用法 

    常用来对来自标准输入的字符进行替换,压缩,和删除 

    格式: cat 文件| tr [选项] 参数 

    -c保留字符集1的字符,其他字符包括换行符\n用字符集2替换
    -d删除所有属于字符集1的字符
    -s将连续重复的字符串压缩成一个
    -t字符集2 替换 字符集1,不加选项效果相同

    默认的基本用法 :

     tr-c:

    tr  -d :

     tr  -s:

     tr -t:

    运用:将$PATH中的":"改变为换行

    [root@localhost tr]#echo $PATH|tr -s ':' '\n'
    

    3.2 用于windows的编写的脚本格式转换为Linux格

     拉入一个Windows编写好的shell测试脚本

     报错原因:Linux中遇到了换行符(“\n”)会进行回车加换行的操作,回车符反而只会作为控制字符(“^ M”)显示,不发生回车的操作。而windows中要回车加换行符(“\r\n”)才会发生回车加换行的操作,缺少一个控制符,或则顺序不对都不能另一行

    解决方案一: 

    1. [root@localhost tr]#cat window.sh |tr -d "\r" >windows
    2. 或则
    3. [root@localhost tr]#cat window.sh |tr -s "\r" "\n" >windows

    方法二:

    下载格式转换工具:dos2unix 

    1. yum install -y dos2unix
    2. #使用格式
    3. dos2unix 文件名

    4.快速裁剪命令——cut 

     4.1 ${ }截取字符串的方法

    在之前的博客中有详细讲解 

    shell脚本编程之循环_站在这别动,我去给你买橘子的博客-CSDN博客https://blog.csdn.net/qq_62462797/article/details/126558087?spm=1001.2014.3001.5501

    4.2 expr substr  截取方法

    1. [root@localhost tr]#i=12345678
    2. [root@localhost tr]#expr substr $i 1 3
    3. 123
    4. [root@localhost tr]#expr substr $i 2 5
    5. 23456

    4.3 cut截取方法 

     对字段进行截取和剪裁

    格式: 

    格式一:cut [选项] 参数

    格式二:cat file | cut [选项] 参数 

    -d指定分隔符(默认分隔符为Tab)
    -f 按字段进行截取。指定第n个字段;n-m表示从第n个字段到第m个字段;a,b,c表示第a、第b、第c个字段
    -b以字节为单位进行截取
    -c以字符为单位进行截取
    –complement排除所指定的字段
    –output-delimiter更改输出内容的分隔符

    [root@localhost tr]#cut -d ':' -f 1-3 /etc/passwd
    

    [root@localhost tr]#head -n 2 /etc/passwd|cut -d ':'  --complement  -f 2
    

    [root@localhost tr]#head -n 2 /etc/passwd|cut -d ':'  -f 1-5 --output-delimiter='@'
    

     

     5.文件拆分——split

     split命令用于在Linux下将大文件拆分为若干小文件。

     格式:split 选项 参数 原始文件 拆分后文件名前缀

    -l指定行数
    -b指定文件的大小
    [root@localhost tr]#split -l 20 test2.txt   sc
    

     6.文件合并——paste

     按照字段来进行文件的合并

     格式:

    paste   [选项]    文件1     文件2

    -d用于指定文件的分隔符(默认情况下为制表符"\n")
    -s将列和行的内容进行互相交换

    运用演示:指定两个文件的第二列进行列合并 

    1. [root@localhost tr]#cat a b
    2. 1 2 3
    3. 2 3 4
    4. 2 1 2
    5. 4 3 4
    6. 2 1 3
    7. 12 1 3
    8. 12 11 21
    9. 11 12 34
    10. a b c
    11. c b a
    12. d e f
    13. f d e
    14. f h j
    15. g k l
    16. 1 2 3
    17. [root@localhost tr]#cat b|awk '{print $2}' >c
    18. [root@localhost tr]#cat a|awk '{print $2}' >d
    19. [root@localhost tr]#paste c d
    20. b 2
    21. b 3
    22. e 1
    23. d 3
    24. h 1
    25. k 1
    26. 2 11
    27. 12

     7.变量扫描器——eval

    命令字前加上eval,shell会在执行命令之前扫描它两次,eval命令首先会先扫描命令行进行所有的置换,然后再执行命令,该命令适用于那些一次扫描无法实现功能的变量,该命令会对变量进行两次扫描。 

    脚本运用测试:

    1. #!/bin/bash
    2. #这是一个验证eval扫描的脚本
    3. a=100
    4. b=a
    5. echo "普通echo输出的变量b的值为:" \$$b
    6. eval echo "经过eval扫描输出变量b的值为:" \$$b

     测试结果:

  • 相关阅读:
    Axios入门
    专为实现最高性能和效率而设计,SQN3242UCKGTA、SQN3220SC、SQN3220 LTE-A Cat 6 模块【SKY85735-11射频前端】
    vue中一个页面引入多个相同组件重复请求的问题?
    iNFTnews | 86年前的DAO:嗜酒者互诫协会
    行业突破!四信实现低延时摄像头弱网状态100ms以内实时传输
    【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
    java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计
    提升学校教育质量,还有这种操作?!
    About Random Numbers
    电子学会2023年06月青少年软件编程(图形化)等级考试试卷(一级)真题,含答案解析
  • 原文地址:https://blog.csdn.net/qq_62462797/article/details/126691870
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号