码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Shell编程】字符截取命令awk、sed命令


    系列文章

    【Shell编程】Shell中的正则表达式
    【Shell编程】字符截取命令cut、printf命令


    目录

    • 系列文章
    • awk命令
      • 功能
      • 语法
      • 条件
      • 动作
      • 实例
        • 测试文本
        • 打印大于1行的所有内容
        • 打印最后一列
        • 输出文本的第二列和第六列
        • 输出空格分隔的文本
        • 测试根分区占用超过80没有并提取根分区占用数字
      • 条件:BEGIN
      • FS内置变量
      • END
      • 关系运算符
      • 在awk命令的输出中支持print和printf命令
    • sed命令
      • 功能
      • 语法
      • 参数
      • 动作
      • 实例
        • 测试文本
        • 多打印一遍第二行
        • 只打印第二行
        • 配合管道符
        • 删除第2行到第4行的数据
        • 在第二行后面追加字符串
        • 在第二行前面插输入俩行数据
        • 替换第二行的数据
        • 第一行前面插入 haha
        • 第一行后面插入 haha
        • 将字符串中的“张三”替换为hi
        • 将第一行替换为hello
        • 只显示第一行和第三行
        • 删除第一行
        • 输出第一行到第三行
        • 删除第一行到第二行

    awk命令

    功能

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
    awk是先读取一行数据再执行条件,默认分隔符是空格个制表符。

    语法

    awk ‘条件1{动作一} 条件2{动作2} …’ 文件名

    条件

    一般使用关系表达式

    x>10判断变量x是否大于10
    x>=10大于等于
    x<=10小于等于

    动作

    1. 格式化输出
    2. 流程控制语句

    实例

    测试文本

    这里的学生表文本和上面类似中间空格也必须要用tab,且tab要一样多。

    在这里插入图片描述
    还有一个是测试文本是姓名、年龄、性别的一个1.txt文本文件。

    打印大于1行的所有内容

    NR:表示行号
    $0:表示整行**

    命令:awk 'NR>1{print $0}' 1.txt

    效果图:
    在这里插入图片描述

    打印最后一列

    NF:表示最后一列

    命令:awk -F' ' '{print $(NF)}' 1.txt

    效果图:
    在这里插入图片描述

    输出文本的第二列和第六列

    命令:awk '{printf $2 "\t" $6 "\n"}' student.txt

    效果图:
    在这里插入图片描述

    输出空格分隔的文本

    命令:df -h | awk 'print $1 "\t" $5 "\t" $6'

    效果图:
    在这里插入图片描述

    测试根分区占用超过80没有并提取根分区占用数字

    命令:df -h | grep sda2 | awk '{print $5}' | cut -d "%" -f 1

    效果图:
    在这里插入图片描述

    条件:BEGIN

    会在输出结果前,先执行一个动作 仅仅·1执行一次

    命令:awk 'BEGIN {print "test !!"} {print $2 "\t" $5}' student.txt

    效果图:
    在这里插入图片描述

    FS内置变量

    awk是先读取一行数据再执行条件
    在这里插入图片描述
    所以我们需要让FS先执行
    在这里插入图片描述

    END

    在命令最后执行
    在这里插入图片描述

    关系运算符

    当第六列成绩大于等于87就输出名字
    在这里插入图片描述

    在awk命令的输出中支持print和printf命令

    • print :会在每一个输出之后自动加入一个换行符(Linux默认没有print)
    • printf :是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手工加入换行符。

    sed命令

    功能

    sed命令是一种几乎包含在所有unix平台(包括Linux)的轻量级流编辑器,sed主要是用来将数据进行选取、替换、删除、新增的命令。

    语法

    sed [选项] ‘[动作]’ 文件名

    参数

    参数说明
    -n一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕。
    -e允许对输入数据应用多条命令编辑
    -i用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。

    动作

    参数说明
    a\追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结
    c\行替换,用c后面的字符穿代替原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结
    i\插入,在当前行前插入一行或者多行,插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结
    d删除,删除指定行
    p打印,输出指定行
    s字串替换,用一个字符串替换另外一个字符串,格式为:“行范围s/旧字串/新字串/g”(和vim中替换有点相似)

    实例

    测试文本

    文件名为student.txt
    在这里插入图片描述

    多打印一遍第二行

    命令:sed '2p' student.txt

    效果图:
    在这里插入图片描述

    只打印第二行

    加-n只会只打印你需要的
    命令:sed -n '2p' student.txt

    效果图:
    在这里插入图片描述

    配合管道符

    命令:df -h | sed -n '2p'

    效果图:
    在这里插入图片描述

    删除第2行到第4行的数据

    命令:sed '2,4d' student.txt

    效果图:
    在这里插入图片描述

    在第二行后面追加字符串

    命令:sed '2a hello' student.txt

    效果图:
    在这里插入图片描述

    在第二行前面插输入俩行数据

    命令:sed '2i hello \ world' student.txt

    效果图:
    在这里插入图片描述

    替换第二行的数据

    命令:sed '2c No such' student.txt

    效果图:
    在这里插入图片描述

    第一行前面插入 haha

    命令:sed 'lihaha' student.txt

    效果图:
    在这里插入图片描述

    第一行后面插入 haha

    命令:sed 'lahaha' student.txt

    效果图:在这里插入图片描述

    将字符串中的“张三”替换为hi

    命令:sed ‘s/张三/hi/g’ 1.txt

    效果图:
    在这里插入图片描述

    将第一行替换为hello

    命令:sed ‘1chello’ 1.txt

    效果图:
    在这里插入图片描述

    只显示第一行和第三行

    命令:sed -n ‘1p;3p’ 1.txt

    效果图:
    在这里插入图片描述

    删除第一行

    命令:sed -n ‘1d’ 1.txt

    效果图:
    在这里插入图片描述

    输出第一行到第三行

    命令:sed -n ‘1,3p’ 1.txt

    效果图:
    在这里插入图片描述

    删除第一行到第二行

    命令:sed -n ‘1,2d’ 1.txt

    效果图:
    在这里插入图片描述

  • 相关阅读:
    2022年广西壮族自治区中职网络安全技能竞赛“Linux操作系统渗透测试详解”
    无涯教程-Flutter - 安装步骤
    湘潭大学软件工程数据库2(题型,复习资源和计划)
    SQL教学: MySQL进阶操作详解--探索DML语句的高级用法
    Android Studio 写一个Java调用c++ 的demo
    零基础学前端(四)重点讲解 CSS:盒子模型、样式选择器、flex布局
    互换性与技术测量试题及答案(4套)
    2. Layui栅格系统和布局
    【webrtc】接收/发送的rtp包、编解码的VCM包、CopyOnWriteBuffer
    vue常用6种数据加密方式的使用
  • 原文地址:https://blog.csdn.net/qq_45254369/article/details/126897049
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号