【嵌入式开发 Linux 常用命令系列 7.7 -- find 和 sed 配合使用介绍】


请阅读嵌入式及芯片开发学必备专栏


文章目录

    • 使用背景
      • 注意事项
      • 使用示例

使用背景

当时想在 linux 环境下 使用 find 命令找到 .c.h 文件,并使用xargssed 命令将文件中所有"demo" 字符串替换为 “hello”

命令实现

  1. 使用 find 命令查找 .c.h 文件
  2. 通过 xargs 将找到的文件列表传递给 sed 命令
  3. 使用 sed 命令在文件中替换字符串

具体命令:
以下是一个完整的命令行示例:

find . -type f \( -name "*.c" -o -name "*.h" \) -print0 | xargs -0 sed -i 's/demo/hello/g'

命令解释:

  1. find . -type f \( -name "*.c" -o -name "*.h" \)
    • find .:从当前目录开始查找。
    • -type f:只查找文件(不包含目录)。
    • \( -name "*.c" -o -name "*.h" \):查找扩展名为 .c.h 的文件。括号和 -o 用于指定多个条件。
  2. -print0
    • -print0:以 null 字符(\0)结尾的方式输出文件名。这是为了处理文件名中可能包含的空格或换行符。
  3. xargs -0
    • xargs -0:从标准输入读取以null字符结尾的输入,并将其传递给后续命令。在这里,它将文件列表传递给 sed 命令。
  4. sed -i 's/demo/hello/g'
    • sed:流编辑器,用于文本处理。
    • -i:直接在文件中进行替换(而不是输出到标准输出)。
    • 's/demo/hello/g':表示全局替换所有匹配的 demo 字符串为 hello

注意事项

  • 使用 -print0xargs -0 是为了确保文件名中包含空格或特殊字符时能够正确处理。
  • sed -i 直接修改文件,请确保在执行命令前备份文件,以防止意外的数据丢失。

使用示例

假设当前目录下有如下文件:

file1.c
file2.h
subdir/file3.c
subdir/file4.h

这些文件中包含以下内容:

// file1.c
int main() {printf("This is a demo.\n");return 0;
}
// file2.h
#define DEMO_CONSTANT 10
// subdir/file3.c
int demoFunction() {return 0;
}
// subdir/file4.h
#ifndef DEMO_H
#define DEMO_H
#endif

执行上述命令后,文件内容将被修改为:

// file1.c
int main() {printf("This is a hello.\n");return 0;
}
// file2.h
#define DEMO_CONSTANT 10
// subdir/file3.c
int helloFunction() {return 0;
}
// subdir/file4.h
#ifndef HELLO_H
#define HELLO_H
#endif

如上所示,所有 .c.h 文件中出现的 demo 字符串都被替换为了 hello

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

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

相关文章

【C++杂货铺】智能指针

目录 🌈 前言🌈 📁 内存泄漏 📂 概念 📂 分类 📂 如何避免 📁 RAII 📁 C11智能指针 📂 auto_ptr 📂 unique_ptr 📂 shared_ptr &#x1…

电子电器架构 --- 智能汽车的大脑(域控制器)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

QT--进程

一、进程QProcess QProcess 用于启动和控制外部进程,管理其输入输出流。 使用方法 start():启动一个新进程。setStandardInputFile():将文件作为标准输入。将进程的标准输入(stdin)重定向到指定的文件。换句话说&am…

AV1技术学习:Constrained Directional Enhancement Filter

CDEF允许编解码器沿某些(可能是倾斜的)方向应用非线性消阶滤波器。它以88为单位进行。如下图所示,通过旋转和反射所示的三个模板来定义八个预设方向。 Templates of preset directions and their associated directions. The templates correspond to directions of…

筑牢数字防线:从微软蓝屏事件看网络安全与系统韧性建设

引言 近期,由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅给全球用户带来了前所未有的挑战,也深刻暴露了当前IT基础设施在面对潜在威胁时的脆弱性。此次事件,如同一面镜子,映照出我们在网络安全与系统稳定…

MATLAB: ode45 求解常微分方程

引入 ode45 是 MATLAB 中用于求解非刚性常微分方程(ODE)的数值方法。它基于 Runge-Kutta 方法,并具有自适应步长调整机制,能够在一定误差控制范围内高效地计算 ODE 的数值解。 下面我们通过这个包含详细注释的代码,一…

Windows 11 系统对磁盘进行分区保姆级教程

Windows 11磁盘分区 磁盘分区是将硬盘驱动器划分为多个逻辑部分的过程,每个逻辑部分都可以独立使用和管理。在Windows 11操作系统中进行磁盘分区主要有以下几个作用和意义: 组织和管理数据:分区可以帮助用户更好地组织他们的数据&#xff0c…

无人机之降落操作及紧急情况处理

一、无人机降落操作 1、选择降落地点 a.提前选择一个平坦且没有障碍物的降落点; b.确认降落点周围没有行人或障碍物,保证降落的安全性。 2、降低飞行高度 a.缓慢降低飞行高度,尽量保持匀速下降,防止因下降过快导致无人机受损…

学习vue第一天

文章目录 1.什么是 Vue?2.渐进式框架3.如何新建一个vue项目 1.什么是 Vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型&#xff0…

Day20 | 39. 组合总和 40.组合总和II 131.分割回文串

语言 Java 39. 组合总和 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidate…

最新可用度盘不限速后台系统源码_去授权开心版

某宝同款度盘不限速后台系统源码,验证已被我去除,两个后端系统,账号和卡密系统 第一步安装宝塔,部署卡密系统,需要环境php7.4 把源码丢进去,设置php7.4,和伪静态为thinkphp直接访问安装就行 …

探索WebKit的CSS表格布局:打造灵活的网页数据展示

探索WebKit的CSS表格布局:打造灵活的网页数据展示 CSS表格布局是一种在网页上展示数据的强大方式,它允许开发者使用CSS来创建类似于传统HTML表格的布局。WebKit作为许多流行浏览器的渲染引擎,提供了对CSS表格布局的全面支持。本文将深入探讨…

qt 如何制作动态库插件

首先 首先第一点要确定我们的接口是固定的,也就是要确定 #ifndef RTSPPLUGIN_H #define RTSPPLUGIN_H #include "rtspplugin_global.h" typedef void (*func_callback)(uint8_t* data,int len,uint32_t ssrc,uint32_t ts,const char* ipfrom,uint16_t f…

【前端学习笔记】CSS基础一

一、什么是CSS 1.CSS 介绍 CSS(Cascading Style Sheets,层叠样式表)是一种用来控制网页布局和设计外观的样式语言。它使得开发者可以分离网页的内容(HTML)和表现形式(样式),提高了…

Spring Security 介绍

1.概要 Spring Security是一个用于在Java应用程序中实现身份验证和访问控制的强大框架。它可以轻松地集成到任何基于Spring的应用程序中,提供了一套丰富的功能来保护应用程序的安全性。 https://spring.io/projects/spring-security/ demo:https://docs.spring.i…

unity2D游戏开发02添加组件移动玩家

添加组件 给PlayGame和EnemyObject添加组件BoxCollider 2D碰撞器,不用修改参数 给PlayGame添加组件Rigibody 2D 设置数据 添加EnemyObject,属性如下 Edit->project setting->Physics 2D 将 y的值改为0 给playerObject添加标签 新建层 将PlayerObj…

美团后端二面

美团后端二面 ……………………………… 两道场景 一道 数字转中文读法(1000-》一千) 0八股0自我介绍 反问 “您觉得我能过吗?” “这个需要横行对比之后才能有结果” ……………………………… 什么时候到岗 场景题 1 假设我有一个…

ETL工程师角度下的SQL优化

作为ETL(Extract, Transform, Load)工程师,SQL优化是提高数据处理和分析效率的关键一环。优化SQL查询可以显著降低数据处理时间,提高ETL过程的性能。本文将从 合理设计数据模型:在ETL过程中,正确的数据模型…

主从DNS服务器

实验 3 :主从 DNS 服务器 将一个区域文件复制到多个服务器上的过程叫做区域传送。将主服务器上的信息复制到辅助服务器上来 实现。 ( 1 )完全区域传送:复制整个区域文件 查看日志 # 主 DNS 服务器的配置【主 dns 服务器的 ip 地…

【STM32 HAL库】ADC

ADC,顾名思义就是模拟信号->数字信号ADC工作原理 分类: 并联比较型-----转换速度快-----成本高、功耗高、分辨率低 分压部分比较部分编码部分(其中Vx为模拟电压输入 ) 逐次逼近型-----结构简单,功耗低-----转换速…