Shell脚本编程基础(四)

news2024/9/20 5:06:42

五种常用文本工具和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.coloradmin.cn/o/2147947.html

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

相关文章

Xv6驱动(四):CLINT

阅读材料 Xv6代码&#xff1a;memlayout.h、start.c、kernelvec.S教材5.4节 CLINT内存映射 实际上&#xff0c;CLINT还包括若干个MSIP寄存器&#xff0c;用来触发软件中断&#xff0c;但是在Xv6中不考虑软件中断&#xff0c;因此这些寄存器也不用考虑 // core local interr…

python 运行其他命令行工具,实时打印输出内容

起因&#xff0c; 目的: python 运行一个命令&#xff0c;最简洁的写法是: import os # 转换视频格式。 cmd "ffmpeg -i a1.ts -c copy a1.mp4"os.system(cmd)问题&#xff1a; 如果上面的视频比较大&#xff0c;需要运行很长时间&#xff0c;那么感觉就像是卡住…

C# 访问Access存取图片

图片存入ole字段&#xff0c;看有的代码是获取图片的字节数组转换为base64字符串&#xff0c;存入数据库&#xff1b;显示图片是把base64字符串转换为字节数组再显示&#xff1b;直接存字节数组可能还好一点&#xff1b; 插入的时候用带参数的sql写法比较好&#xff1b;用拼接…

InternVL 微调实践闯关任务

基础任务 follow 教学文档和视频使用QLoRA进行微调模型&#xff0c;复现微调效果&#xff0c;并能成功讲出梗图. 尝试使用LoRA&#xff0c;或调整xtuner的config&#xff0c;如LoRA rank&#xff0c;学习率。看模型Loss会如何变化&#xff0c;并记录调整后效果(选做&#xff…

十、数字人IP应用方案

1、背景 在当今的数字时代,随着AI技术的突飞猛进,数字人AI已经从概念走向应用,成为知识内容创作领域一股不可忽视的力量。它的出现,在很大程度上极大地提高了内容的生产效率,大有替代知识IP,成为内容IP终结者的趋势。 数字人IP,从形象到声音,与知识博主真人的相似度可…

初中生物--7.生物圈中的绿色植物(二)

绿色植物与生物圈的水循环 1.植物对水分的吸收和运输 1.植物主要通过根吸收水分。根吸收水分的主要部位是根尖的成熟区。 2.外界溶液浓度<根毛细胞溶液浓度→细胞吸水&#xff1b; 1.在这种情况下&#xff0c;根毛细胞内的溶液浓度高于外界溶液&#xff0c;因此细胞内的…

蓝星多面体foc旋钮键盘复刻问题详解

介绍&#xff1a; 本教程是针对立创开源项目 承载我所有幻想的键盘 - 立创开源硬件平台 作者是 蓝星多面体 这里我总结一下我复刻过程中的一些问题 一 <<编译环境怎么搭建&#xff1f;>> 第一步 安装vscode 下载vscode &#xff08;可以在各大应用平台…

R语言中的shiny框架

R语言中的shiny框架 Shiny 的基本概念基本用法示例常见用法示例1. 输入控件2. 输出控件3. 动态 UI4. 数据传递和反应式编程 高级功能1. 使用 shinyjs2. 使用 shinythemes Shiny 是一个 R 语言的框架&#xff0c;用于构建交互式的网页应用&#xff0c;可以让用户以最少的 HTML、…

飞驰云联FTP替代方案:安全高效文件传输的新选择

FTP协议广泛应用各行业的文件传输场景中&#xff0c;由于FTP应用获取门槛低、使用普遍&#xff0c;因此大部分企业都习惯使用FTP进行文件传输。然而面临激增的数据量和网络安全威胁的不断演变&#xff0c;FTP在传输安全性与传输性能上有所欠缺&#xff0c;无法满足企业现在的高…

2024java面试-软实力篇

为什么说简历很重要&#xff1f; 一份好的简历可以在整个申请面试以及面试过程中起到非常好的作用。 在不夸大自己能力的情 况 下&#xff0c;写出一份好的简历也是一项很棒的能力。为什么说简历很重要呢&#xff1f; 、 先从面试来说 假如你是网申&#xff0c;你的简历必然…

Windows本地pycharm使用远程服务器conda虚拟环境

1、Windows下载pycharm专业版&#xff0c;必须是专业版&#xff0c;不然连不了远程服务器。 Download PyCharm: The Python IDE for data science and web development by JetBrains 2、添加远程服务器的虚拟环境&#xff0c;在pycharm右下角落选择 添加新的解释器>>SSH。…

计算机网络33——文件系统

1、chmod 2、chown 需要有root权限 3、link 链接 4、unlink 创建临时文件&#xff0c;用于非正常退出 5、vi vi可以打开文件夹 ../是向外一个文件夹 6、ls ls 可以加很多路径&#xff0c;路径可以是文件夹&#xff0c;也可以是文件 ---------------------------------…

【Java】并发集合

并发集合&#xff08;java.util.concurrent&#xff09; 一、List CopyOnWriteArrayList&#xff08;ReentrantLock实现线程安全&#xff09; &#xff08;1&#xff09;并发修改&#xff08;写操作&#xff09;时保证线程安全&#xff1a; 通过ReentrantLock实现多个线程并…

Solidwork角度尺寸标注

效果如下&#xff1a; 首先&#xff0c; 先选第一条边 然后选第二条边&#xff0c;即可

把设计模式用起来!(4) 用不好模式?之原理不明

&#xff08;清华大学出版社 《把设计模式用起来》书稿试读&#xff09; 上一篇&#xff1a;把设计模式用起来&#xff01;&#xff08;3&#xff09;用不好模式&#xff1f;之时机不对 为什么用不好设计模式&#xff1f;——原理不明 难搞的顾客&#xff1a;“抹这种霜&#…

【prefect】python任务调度工具 Prefect | 可视化任务工具 | Python自动化的终极武器 | 高效数据管道管理

一、产品介绍 1、官方 Github https://github.com/PrefectHQ/prefect 2、官方文档 https://docs.prefect.io/3.0/get-started/index 3、Pgsql说明 正确的python链接pgsql如下&#xff1a; import psycopg2 from sqlalchemy import create_enginedef connect_with_psycopg2(…

【机器学习】经典数据集鸢尾花的分类识别

【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取…

Photoshop 2021安装教程

软件介绍 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是美国Adobe公司旗下最为出名的图像处理软件系列之一。ps 2021新增一键换天空&#xff0c;AI只能滤镜&#xff0c;新增内置的画笔工具极为丰富&#xff0c;成千上万的精致像素、动态和矢量画笔可以满足你的各种绘图…

谷歌深度学习研究揭示OpenAI O1模型优化策略:比规模更重要的计算效率

引言 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;如OpenAI的GPT-4和Google DeepMind的Palm 2已成为自然语言处理领域的佼佼者&#xff0c;它们通过生成类人文本、回答复杂问题、编写代码等能力&#xff0c;改变了许多行业的工作方式。然而&#xff0c;随着这…

2.4 数据库表字段约束

一、数据库三大范式 我们构造数据库的时候必须要遵守一定的原则&#xff0c;那这个规则就是范式关系型数据库&#xff0c;一共有六种范式&#xff0c;一般情况下只需要满足第三范式即可。 ​第一范式&#xff1a;原子性构造数据库必须遵循一定的规则&#xff0c;这种规则就是…