Shell脚本编程基础(四)

五种常用文本工具和Crontab调度工具(一)

  1. cut: 用于从文本中提取特定的字段或列。
  2. grep: 用于搜索文本中的特定模式。
  3. awk: 用于处理和分析文本。
  4. sed: 用于文本替换和编辑。
  5. sort: 用于对文本行进行排序。

Crontab

Crontab 是用于定时任务调度的工具,可以用来定期执行脚本或命令。通过设定特定的时间表达式,来控制任务的执行频率。

这两类工具在功能和用途上有很大不同,但都在命令行环境中非常常用。

1. cut 命令

常用选项
  • -d <delimiter>: 指定字段分隔符。
  • -f <fields>: 指定要提取的字段。
文件 1 内容 (cut_example.txt)
apple banana
orange grape
kiwi lemon
melon berry
案例实操
  1. 切割 cut_example.txt 的第一列

    cut -d " " -f 1 cut_example.txt
    

    输出:

    apple
    orange
    kiwi
    melon
    
  2. 切割 cut_example.txt 的第二列

    cut -d " " -f 2 cut_example.txt
    

    输出:

    banana
    grape
    lemon
    berry
    
文件 2 内容 ( data.txt )
apple,10,red
banana,20,yellow
grape,30,purple
  1. 提取data.txt第二列和第三列:
cut -d ',' -f 2,3 data.txt

输出:

10,red
20,yellow
30,purple

2. sed 命令

常用选项
  1. a (append)

    • 在指定行后追加文本。
  2. d (delete)

    • 删除指定行。
  3. s (substitute)

    • 用于替换文本。
文件内容 (sed_example.txt)
apple banana
orange grape
kiwi lemon
melon berry
案例实操
  1. 在第三行下插入新行

    sed '3a fruit salad' sed_example.txt
    

    输出:

    apple banana
    orange grape
    kiwi lemon
    fruit salad
    melon berry
    
  2. 删除包含 kiwi 的行

    sed '/kiwi/d' sed_example.txt
    

    输出:

    apple banana
    orange grape
    melon berry
    
  3. melon 替换为 watermelon

    sed 's/melon/watermelon/' sed_example.txt
    

    输出:

    apple banana
    orange grape
    kiwi lemon
    watermelon berry
    

3. awk 命令

常用选项
  • -F <delimiter>: 指定输入字段分隔符。
  • -v <var=value>: 定义和传递外部变量。

正则表达式匹配:

  • /.*/ 匹配所有行。
  • /pattern/ 匹配包含 pattern 的行。
  • /^pattern/ 匹配以 pattern 开头的行。
  • /pattern$/ 匹配以 pattern 结尾的行。

条件判断:

  • $1 == "root":匹配第一个字段等于 "root" 的行。
  • $3 > 1000:匹配第三个字段大于 1000 的行。
案例1 文件内容 (/etc/passwd 示例)
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:User:/home/user:/bin/bash
  1. 搜索以 root 开头的所有行,并输出第7列

    awk -F: '/^root/{print $7}' /etc/passwd
    awk -F':' '\$1 == "root" {print \$7}' /etc/passwd
    

    输出:

    /bin/bash
    
  2. 输出第1列和第7列,中间以逗号分隔

    awk -F: '/^root/{print $1 "," $7}' /etc/passwd
    

    输出:

    root,/bin/bash
    
  3. 用户ID增加1并输出

    awk -v i=1 -F: '{print $3+i}' /etc/passwd
    

    输出:

    1
    1001
    
  4. 统计文件名、行号、列数

    awk -F: '{print "filename:" FILENAME ", linenumber:" NR ", columns:" NF}' /etc/passwd
    

    输出:

    filename:/etc/passwd, linenumber:1, columns:7
    filename:/etc/passwd, linenumber:2, columns:7
    
    1. FILENAME
      FILENAMEawk 的内置变量,表示当前正在处理的文件名。在这个例子中,它会输出 /etc/passwd

    2. NR
      NRawk 的内置变量,表示当前的行号。每读取一行记录,NR 将自动递增。

    3. NF
      NFawk 的内置变量,表示当前行的字段数。对于每一行,NF 会计算根据指定分隔符(这里是 :)分隔出来的字段数量。

  5. 提取 IP 地址

    ifconfig ens33 | grep "inet " | awk -F" " '{print $2}'
    

    输出: (假设 IP 为 192.168.1.102)

    192.168.1.102
    
案例2 假设 data.txt 内容为:
apple 10
banana 20
grape 30
kiwi 40
melon 50
  • 使用 -F 指定分隔符

    如果文件使用逗号分隔:

    awk -F ',' '{print $1, $2}' data.txt
    
  • 使用 -v 传递变量(不使用 -F 指定时默认使用空格分隔,cut 切割取第几列时需要考虑连续空格的第几个空格,而awk不需要考虑,多个连续空格会视为一个)

    找到数量大于某个值的水果:

    awk -v threshold=25 '{if ($2 > threshold) print $1, $2}' data.txt
    awk -v threshold=25 '$2 > threshold {print$1, $2}' data.txt
    

    输出:

    grape 30
    kiwi 40
    melon 50
    
  • 简单的计算

    计算每行的数量乘以2:

    awk '{print $1, $2 * 2}' data.txt
    

    输出:

    apple 20
    banana 40
    grape 60
    kiwi 80
    melon 100
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539440.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

算法-查找算法(顺序查找二分查找)

3.查找算法 查找也称为搜索&#xff0c;就是从数据中找出满足特定条件的元素。 常见的查找算法&#xff1a;顺序查找、二分查找。 3.1 顺序查找算法 顺序查找算法又称为线性查找&#xff0c;是一种比较简单的查找算法&#xff0c;是将数据一项一项的按照顺序逐个查找&#x…

电力电容器、电子电容器的区别

电力电容器和电子电容器在用途、结构、工作环境以及电气性能等方面有显著的区别。以下是它们的主要区别&#xff1a; 1、用途和应用场景 电力电容器&#xff1a; 主要用于电力系统中&#xff0c;主要功能是进行无功功率补偿&#xff0c;提高功率因数&#xff0c;改善电网的电…

mybatisplus介绍以及使用(上)

目录 一、概念 1、什么是mybatisplus 2、为什么要使用mybatisplus 二、mybatisplus的使用 1、安装 2、常用注解 3、条件构造器 一、概念 1、什么是mybatisplus MyBatis-Plus&#xff08;简称MP&#xff09;是一个基于MyBatis的增强框架&#xff0c;旨在简化开发、提高…

云端启航,探索微生物奥秘——美格基因云组学分析全新升级!

在这个信息爆炸的时代&#xff0c;我们深知高效的数据处理对于科研的重要性。为了帮助您更好地挖掘微生物世界的无限可能&#xff0c;美格基因凭借在弹性云计算领域的深厚积累&#xff0c;构建了一个强大的云生态系统。这一系统不仅整合了云组学、云工具、云数据库、前沿工具等…

人脸活体检测系统源码分享

人脸活体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Spring底层架构源码解析(三)

目录 ApplicationContext AnnotationConfigApplicationContext ClassPathXmlApplicationContext 类型转换 PropertyEditor ConversionService BeanPostProcessor FactoryBean MetadataReader、ClassMetadata、 AnnotationMetadata ExcludeFilter&#xff0c;Inclu…

【2025】基于微信小程序的人工智能课程学习平台的设计与实现(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

如何使用ssm实现企业文档管理系统+vue

TOC ssm648企业文档管理系统vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

htop(1) command

文章目录 1.简介2.格式3.选项4.交互式命令5.示例6.小结参考文献 1.简介 htop 是一种交互式、跨平台的基于 ncurses 的进程查看器。 类似于 top&#xff0c;但 htop 允许您垂直和水平滚动&#xff0c;并使用指向设备(鼠标)进行交互。您可以观察系统上运行的所有进程&#xff0…

关于支持向量机的一份介绍

在这篇文章中&#xff0c;我将介绍与支持向量机有关的东西&#xff0c;我们知道支持向量机主要分两类&#xff0c;就是线性支持向量机和核支持向量机这两种&#xff08;当然还有其他的&#xff0c;如多类支持向量机、 Nu-Support Vector Regression等&#xff09;&#xff0c;因…

docker存储

docker分层结构 如图所示&#xff0c;容器是由最上面可读可写的容器层&#xff0c;以及若干个只读镜像层组成&#xff0c;创建容器时&#xff0c;容器中的 数据都来自镜像层。这样的分层机构最大的特点是写时复制&#xff1a; 1、容器中新生成的数据会直接存放在容器层&#xf…

产品经理入门攻略:如何从零开始成为产品经理

“人人都是产品经理”这句话相信你一定听过。 作为现在的热门职业&#xff0c;许多朋友也在心里埋下了一颗想要成为产品经理的种子。 产品经理的工作其实没有传说中的那么“高大上”&#xff0c;甚至可以说大多数时候是枯燥且无聊的&#xff0c;需要不断地对数据进行分析&…

第十一章 【后端】商品分类管理微服务(11.5)——增强响应

11.5 增强响应 在前后端分离的开发模式下,我们一般会统一后端的响应格式,比如自定义 Response 结构,但每个开发者可能会封装各自的 Response 结构,造成不一致,因此我们需要将响应格式统一起来,定义一个统一的标准响应格式。 11.5.1 创建响应模块 新建 yumi-etms-respon…

高效实现业务流程管理的技术——低代码解决方案

一、低代码平台概述 低代码平台允许用户通过可视化的界面设计和配置应用程序&#xff0c;而无需深入编程知识。这种平台通常包括拖拽式的组件、流程图设计工具、以及预设的功能模块&#xff0c;使得业务用户和开发者都能快速构建和修改应用程序。 二、低代码平台在 BPM 中的优…

动手学深度学习PyTorch 第 1 章 引言

在线电子书 深度学习介绍 安装 使用conda环境 conda create -n d2l-zh python3.8 pip安装需要的包 pip install jupyter d2l torch torchvision下载代码并执行 wget https://zh-v2.d2l.ai/d2l-zh.zip unzip d2l-zh.zip jupyter notebookpip install rise如果不想使用jupyt…

ubuntu20.04安装cudnn

先登入账号 网址&#xff1a;https://developer.nvidia.com/cudnn 选择ubuntu20.04 x86_64&#xff08;Deb&#xff09; 在下载好文件的文件夹下打开终端 sudo apt-get install zlib1gsudo dpkg -i cudnn-local-repo-${distro}-8.x.x.x_1.0-1_amd64.debsudo cp /var/cudnn-lo…

【终极对决】Ping32 vs 绿盾:十大维度深度剖析,谁是企业数据安全的守护神?

在信息安全领域&#xff0c;企业对数据保护的需求不断升级。Ping32与绿盾加密作为两款备受关注的数据保护软件&#xff0c;各具特色。本文将从十大维度深度剖析这两款软件&#xff0c;帮助企业选择最适合自己的数据安全解决方案。 1. 加密算法 Ping32 Ping32采用了多种高级加…

Tiny Universe - Llama3架构

Llama3和Llama2和Qwen2的整体架构相似&#xff0c;本篇文章主要讲解它们的一些主要不同点。 关于Qwen2架构可参考 Qwen2架构 学习笔记 llama3区别于llama2在模型层面的区别主要体现在全模型使用GQA。 基础知识 MLP MLP&#xff08;Multi-Layer Perceptron&#xff09;多层感…

有毒有害气体检测仪的应用和性能_鼎跃安全

随着现代工业的不断发展和扩张&#xff0c;越来越多的企业涉及到有毒有害气体的生产、使用和处理。工业规模的扩大导致有毒有害气体的排放量增加&#xff0c;同时也增加了气体泄漏的风险。在发生火灾、爆炸或危险化学品泄漏等紧急事件时&#xff0c;救援人员需要迅速了解现场的…

生产管理电子看板如何助力工厂数字化转型

在当今快速发展的工业环境中&#xff0c;数字化转型已成为提升企业竞争力的关键因素之一。作为工厂管理的重要工具&#xff0c;生产管理电子看板在实现数字化转型方面发挥了不可或缺的作用。电子看板不仅优化了生产流程&#xff0c;还提高了决策效率&#xff0c;为企业带来了显…