两个实用的shell命令:sed和awk用法

news2024/11/26 5:52:06

🍎作者:阿润菜菜

📖专栏:Linux系统编程


本文目录

sed的用法

sed常用场景

awk的用法

 awk常用场景


我们先来看一下力扣上的shell题库中的一题:

 实现这个功能一般来说我们会想到tail和head命令来指定打印前几行或者后几行。但使用sed命令可以更简洁的实现相同的功能:

tail -n+10 file.txt | head -1
# 利用sed或awk
sed -n '10p' file.txt
-n: 仅显示script处理后的结果
p: 打印 匹配行

awk "NR==10" file.txt

sed的用法

sed 是一种流编辑器,它是文本处理中非常重要的工具,本身是一个管道命令,主要是以行为单位进行处理,支持正则表达式,不影响源文件,可以将数据行进行替换、删除、新增、选取等特定工作。

命令格式

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

 参数:文件 指定待处理的文本文件列表

sed常用选项 

  • -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
  • -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
     
  • -h或--help:显示帮助;
  • -n或--quiet或——silent:仅显示script处理后的结果;
  • -V或--version:显示版本信息。

sed常用命令 

  • a\ # 在当前行下面插入文本。
  • i\ # 在当前行上面插入文本。
  • c\ # 把选定的行改为新的文本。
  • d # 删除,删除选择的行。
  • D # 删除模板块的第一行。
  • p # 打印模板块的行。
  • P # (大写) 打印模板块的第一行。
  • s # 替换指定字符

sed常用场景

sed最常用的就是替换操作

sed替换标记

g # 表示行内全面替换。  
p # 表示打印行。  
w # 表示把行写入一个文件。  
x # 表示互换模板块中的文本和缓冲区中的文本。  
y # 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 # 子串匹配标记
& # 已匹配字符串标记

常用场景示例:

# 用linux替换全部unix
sed 's/unix/linux/g' test.txt
# 只替换第三个
sed '3 s/unix/linux/g' test.txt
# 在范围内替换
sed '1,3 s/unix/linux/g' geekfile.txt

s 命令表示替换 第二个参数unix表示原内容 第三个参数linux表示替换内容  g表示全局替换

 注意: 如果我们仅仅是想对单词进行修改的话,因为sed做的是文本匹配,可能会出现把一些文件的前缀或者后缀替换的操作。解决办法是单词后面加个空格 。

awk的用法

awk命令与sed不同,它是按列处理,支持正则表达式。它在命令行中使用,但更多是作为脚本来使用。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。

命令格式

awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)

awk常用选项

  • -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:,默认的分隔符是连续的空格或制表符
  • -v var=value 赋值一个用户定义变量,将外部变量传递给awk
  • -f scripfile 从脚本文件中读取awk命令
  • -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

 awk常用场景

 awk获取指定行

awk '{ print $2,$3 }' filename

awk查看进程pid

sheepxi 1234 a1
sheepfri 5678 a2
sheepman 1000 c1

常用场景:比如说我们在开发时需要查看一下当前有哪些进程正在跑

 此时如果我们需要打印一下进程id,我们可以管道符连接awk 进行查看

 相关练习:统计词频


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

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

相关文章

string的模拟实现(下)

目录 string的模拟实现下 析构函数&#xff1a; 完善函数 空对象的构造函数&#xff1a; 头插函数的一些修正&#xff1a; 构造函数的完善&#xff1a; 实现append 插入函数&#xff1a; 插入函数(字符串&#xff09; erase删除函数&#xff1a; 实现find函数&#…

【读论文】Spiking-YOLO Spiking Neural Network for Energy-Efficient Object Detection

AAAI-20 摘要 本文提出两个新方法为深度SNN提供快速、准确的信息传递&#xff1a;通道归一化和具有不平衡阈值的带符号神经元&#xff1b;本文也提出了一个基于脉冲的目标检测模型&#xff1a;Spiking-YOLO&#xff0c;并且在non-trivial datasets, PASCALVOC 和 MS COCO数据…

指针与数组

目录指针运算&#xff08;补&#xff09;指针指针指针的关系运算&#xff08;补&#xff09;指针与数组数组名二级指针指针数组指针运算&#xff08;补&#xff09; 指针指针 上一篇博客我们介绍了指针运算中的三种常见运算&#xff1a;指针整数&#xff0c;指针关系运算&…

23.1.27打卡 Codeforces Round #846 (Div. 2) A~D

https://codeforces.com/contest/1780A题给你一个长度为n的数组, 问你是否能找出三个数字, 使得这三个数字之和为奇数简单的小学数学奇偶奇偶偶偶所以我们只要找到三个奇数或者两个偶数一个奇数就好了/* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿…

简单复现 残差网络、Googlenet、mobilenet、SqueezeNet、ShuffleNet

1.残差网络 1&#xff09;网络结构 当对x求偏导的时候&#xff0c;F&#xff08;x&#xff09;对x求偏导的值很小的时候&#xff0c;对整体求x的偏导会接近于1 这样解决了梯度消失问题&#xff0c;我们可以对离输入很近的层进行很好的更新。 要注意的是F&#xff08;x&#…

【REACT-redux】

1. redux介绍 1.1 描述 Redux最主要是用作应用状态的管理。简言之&#xff0c;Redux用一个单独的常量状态树&#xff08;state对象&#xff09;保存这一整个应用的状态&#xff0c;这个对象不能直接被改变。当一些数据变化了&#xff0c;一个新的对象就会被创建&#xff08;使…

JDK SPI 和 Dubbo SPI

SPI &#xff08;Service Provider Interface&#xff09;&#xff0c;简单翻译就是服务提供接口&#xff0c;这里的“服务”泛指任何一个可以提供服务的功能、模块、应用或系统&#xff0c;会预留一些口子或者扩展点&#xff0c;只要按照既定的规范去开发&#xff0c;就可以动…

MES和金蝶云星空接口打通对接实战

四化智造MES&#xff08;WEB&#xff09;和金蝶云星空接口打通对接实战数据源平台:四化智造MES&#xff08;WEB&#xff09;MES建立统一平台上通过物料防错防错、流程防错、生产统计、异常处理、信息采集和全流程追溯等精益生产和精细化管理&#xff0c;帮助企业合理安排生产排…

机器视觉_HALCON_HDevelop用户指南_2.Getting Started

文章目录前言二、Getting Started2.1. 运行HDevelop2.2. 运行示例程序前言 标题本来想用“开始使用”或“快速上手”&#xff0c;不过感觉怪怪的&#xff0c;干脆就叫Getting Started吧&#xff0c;因为许多开发手册&#xff0c;开始上手的那节就叫这个名字。 本文是接上一篇…

【人工智能原理自学】LSTM网络:自然语言处理实践

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解LSTM网络&#xff1a;自然语言处理实践&#xff0c;一起卷起来叭&#xff01; 目录一、“RNN”二、编程实验一、“RNN” 上节课我们利用词嵌入把句子转化为词向量序列…

手把手本地搭建服务器笔记1

需要的下载的东西&#xff1a; vmware (百度网盘)银河麒麟镜像xshell,xftp安装vmware&#xff1a; 下载的包里有密钥&#xff0c;安装的时候就直接把密钥扔里面就好了 镜像处理&#xff1a; vmware左上角文件-新建虚拟机-典型&#xff0c;下一步 -安装程序光盘映像文件&am…

基于嵌入式物联网技术的智慧病房方案设计

文章目录前言1、要求2、系统设计3、功能模块3、系统功能模块图一、stm32控制模块原理图二、各功能模块的实现1、整个系统的基本配置2、RTOS多任务1、设计线程2、配置主函数代码3、温湿度读取模块(I2C)4、LED定时开关灯(pwm)5、按键实现报警信号6、脉搏&血氧数据读取7、UART…

【HTML】基础的入门学习

HTML 菜鸟教程 简介 一般结构&#xff1a; <!DOCTYPE html> 声明为 HTML5 文档<html> 元素是 HTML 页面的根元素<head> 元素包含了文档的元&#xff08;meta&#xff09;数据&#xff0c;如 <meta charset"utf-8"> 定义网页编码格式为 ut…

proteus仿真软件中芯片的命名规则与封装方法(详细版)

第一&#xff1a;PCB封装库命名规则 1、集成电路&#xff08;直插&#xff09; 用DIP-引脚数量尾缀来表示双列直插封装​ 尾缀有N和W两种,用来表示器件的体宽​ 为体窄的封装&#xff0c;体宽300mil,引脚间距2.54mm​ 为体宽的封装, 体宽600mil,引脚间距2.54mm​ 如&#…

11、关联数据库

文章目录11、关联数据库11.1 常规方式11.2 常规操作【尚硅谷】idea实战教程-讲师&#xff1a;宋红康 生活是属于每个人自己的感受&#xff0c;不属于任何别人的看法 11、关联数据库 11.1 常规方式 找到数据库选项&#xff1a; 添加指定数据库&#xff1a; 配置MySQL数据库…

5. 网络编程之UDP编程

1. UDP协议的特点 相比与TCP协议来说&#xff0c;UDP协议就显得相对比较简单了。 (1) UDP是无连接的   即发送数据之前不需要建立连接(当然&#xff0c;发送数据结束时也没有连接可释放)&#xff0c;因此减少了开销和发送数据之前的时延。 (2) UDP使用尽最大努力交付   即…

78、Points2NeRF: Generating Neural Radiance Fields from 3D point cloud

简介 github&#xff1a;https://github.com/gmum/points2nerf 由于点云的大小和复杂性&#xff0c;处理这些点云具有挑战性&#xff0c;现有的方法通过将网格拟合到点云并渲染来解决这个问题&#xff0c;这种方法导致结果可视化的保真度降低&#xff0c;并遗漏了在计算机图形…

HashTable HashMap ConcurrentHashMap 的介绍以及区别

目录 &#x1f407;今日良言:投资自己才是最好的投资 &#x1f409;一.HashMap. &#x1f415;二.HashTable &#x1f40d;三.ConcurrentHashMap &#x1f402;四.三者的区别 &#x1f407;今日良言:投资自己才是最好的投资 时隔四十多天,今天博主要更新了. 后续内容也是精…

[机器学习]损失函数DLC

一、损失函数的概念 损失函数(Loss Function)是用于评估预测结果和真实结果之间差距的一个公式&#xff0c;为模型优化指明方向。在模型优化过程中一般表述为&#xff1a;或 与针对整个训练集的代价函数(Cost Function)不同&#xff0c;损失函数通常仅针对单个训练样本。可以归…

RK3568平台开发系列讲解(驱动基础篇)Linux 内核源码介绍

🚀返回专栏总目录 文章目录 一、目录树概览二、快速确定主板关联代码2.1、基础代码2.2、驱动代码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢进行嵌入式 Linux 产品开发,往往需要对内核进行裁剪和定制,以满足嵌入式产品的功能和性能需求。 一、目录树概览 解压…