Linux替换文件字符串和合并文件命令

简介: Linux替换文件字符串和合并文件命令

一、Linux 替换文件中指定的字符串命令

sed -i 's/原字符串s1/新字符串s2/g' defult.cfg   替换当前行所有s1为s2
sed -i 's/原字符串s1/新字符串s2/' defult.cfg    替换当前行第一个s1为s2
场景:将code目录下面所有java后缀文件,把文件内容里面含有 tttt 的,换成 kkkk 
(1)找到code目录,发现里面既有java文件,也有xml和目录
-bash-4.1# cd code/
-bash-4.1# ll
total 184
drwxr-xr-x 8 root root  4096 Aug 16 18:06 coreProcess
drwxr-xr-x 4 root root  4096 Aug 16 18:06 disasterRecovery
-rw-r--r-- 1 root root  4981 Aug 17 09:30 EmergencyNodeInfoController.java
-rw-r--r-- 1 root root  4090 Aug 17 09:30 EmergencyNodeInfo.java
-rw-r--r-- 1 root root  1572 Aug 17 09:30 EmergencyNodeInfoMapper.java
-rw-r--r-- 1 root root  5567 Aug 16 18:06 EmergencyNodeInfoMapper.xml
-rw-r--r-- 1 root root 17590 Aug 17 09:30 EmergencyNodeInfoServiceImpl.java
-rw-r--r-- 1 root root  7604 Aug 17 09:30 EmergencyNodeOperateServiceImpl.java
drwxr-xr-x 2 root root  4096 Aug 16 18:06 emergencyProcess
-rw-r--r-- 1 root root  3969 Aug 17 09:30 EmergencyProcessStateController.java
-rw-r--r-- 1 root root  1351 Aug 17 09:30 EmergencyProcessState.java
-rw-r--r-- 1 root root  1591 Aug 17 09:30 EmergencyProcessStateMapper.java
-rw-r--r-- 1 root root  2637 Aug 16 18:06 EmergencyProcessStateMapper.xml
-rw-r--r-- 1 root root  2862 Aug 17 09:30 EmergencyProcessStateServiceImpl.java
-rw-r--r-- 1 root root  4563 Aug 17 09:30 EmergencySwitchProcessInfoController.java
-rw-r--r-- 1 root root  3593 Aug 17 09:30 EmergencySwitchProcessInfo.java
-rw-r--r-- 1 root root  1852 Aug 17 09:30 EmergencySwitchProcessInfoMapper.java
-rw-r--r-- 1 root root  5376 Aug 16 18:06 EmergencySwitchProcessInfoMapper.xml
-rw-r--r-- 1 root root 12033 Aug 17 09:30 EmergencySwitchProcessInfoServiceImpl.java
-rw-r--r-- 1 root root  4441 Aug 17 09:30 EmergencyTaskLogController.java
-rw-r--r-- 1 root root  4484 Aug 17 09:30 EmergencyTaskLog.java
-rw-r--r-- 1 root root  1947 Aug 17 09:30 EmergencyTaskLogMapper.java
-rw-r--r-- 1 root root  6737 Aug 16 18:06 EmergencyTaskLogMapper.xml
-rw-r--r-- 1 root root  6347 Aug 17 09:30 EmergencyTaskLogServiceImpl.java
-rw-r--r-- 1 root root   322 Aug 17 09:30 ExecState.java
drwxr-xr-x 2 root root  4096 Aug 16 18:06 flowChart
-rw-r--r-- 1 root root  2364 Aug 17 09:30 IEmergencyNodeInfoService.java
-rw-r--r-- 1 root root   323 Aug 17 09:30 IEmergencyNodeOperateService.java
-rw-r--r-- 1 root root  1674 Aug 17 09:30 IEmergencyProcessStateService.java
-rw-r--r-- 1 root root  2082 Aug 17 09:30 IEmergencySwitchProcessInfoService.java
-rw-r--r-- 1 root root  2575 Aug 17 09:30 IEmergencyTaskLogService.java
-bash-4.1# 
(2)打开某一个java文件,看一下里面的内容,使用more命令,我们发现里面确实有很多的含有tttt的字符串
-bash-4.1# more EmergencyNodeInfoController.java 
package com.hidata.devops.emergency.controller;
import com.hidata.devops.emergency.domain.EmergencyNodeInfo;
import com.hidata.devops.emergency.service.IEmergencyNodeInfoService;
import com.tttt.common.annotation.Log;
import com.tttt.common.core.controller.BaseController;
import com.tttt.common.core.domain.AjaxResult;
import com.tttt.common.core.page.TableDataInfo;
import com.tttt.common.enums.BusinessType;
import com.tttt.common.utils.SecurityUtils;
import com.tttt.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
.....................此处省略一万字
(3)接下来,我们使用替换字符串命令 :sed -i ‘s/tttt/kkkk/g’ *.java ,具体操作如下:
-bash-4.1# sed -i 's/tttt/kkkk/g' *.java
-bash-4.1# more EmergencyNodeInfoController.java 
package com.hidata.devops.emergency.controller;
import com.hidata.devops.emergency.domain.EmergencyNodeInfo;
import com.hidata.devops.emergency.service.IEmergencyNodeInfoService;
import com.kkkk.common.annotation.Log;
import com.kkkk.common.core.controller.BaseController;
import com.kkkk.common.core.domain.AjaxResult;
import com.kkkk.common.core.page.TableDataInfo;
import com.kkkk.common.enums.BusinessType;
import com.kkkk.common.utils.SecurityUtils;
import com.kkkk.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;

这样字符串tttt就都被替换成kkkk了。

二、将多个文件内容合并到一个新文件

场景:接着上面的说,刚刚已经把java后缀文件里面内容都已经替换完毕了,现在想把所有的java后缀文件,合并到一个新的文件中,具体操作如下:
(1)首先我们要创建一个新的文件,用来存放合并的内容:touch aaaa.txt
drwxr-xr-x 4 root root  4096 Jul 15 10:54 amis
drwxr-xr-x 6 root root  4096 Aug 17 09:42 code
drwxr-xr-x 2 root root 24576 Aug 12 15:53 download
drwxr-xr-x 4 root root  4096 Aug 15 15:57 hidbm-vue
-rw------- 1 root root 40314 Dec 28  2021 nohup.out
drwxr-xr-x 3 root root  4096 Jan 26  2022 srvhub
drwxr-xr-x 2 root root  4096 Aug 12 08:57 upload
-bash-4.1# touch aaaa.txt
-bash-4.1# ll
total 84
-rw-r--r-- 1 root root     0 Aug 17 09:47 aaaa.txt
drwxr-xr-x 4 root root  4096 Jul 15 10:54 amis
drwxr-xr-x 6 root root  4096 Aug 17 09:42 code
drwxr-xr-x 2 root root 24576 Aug 12 15:53 download
drwxr-xr-x 4 root root  4096 Aug 15 15:57 hidbm-vue
-rw------- 1 root root 40314 Dec 28  2021 nohup.out
drwxr-xr-x 3 root root  4096 Jan 26  2022 srvhub
drwxr-xr-x 2 root root  4096 Aug 12 08:57 upload
-bash-4.1# 
(2)执行合并命令:cat code/*.java >> aaaa.txt
-bash-4.1# ll
total 84
-rw-r--r-- 1 root root     0 Aug 17 09:47 aaaa.txt
drwxr-xr-x 4 root root  4096 Jul 15 10:54 amis
drwxr-xr-x 6 root root  4096 Aug 17 09:42 code
drwxr-xr-x 2 root root 24576 Aug 12 15:53 download
drwxr-xr-x 4 root root  4096 Aug 15 15:57 hidbm-vue
-rw------- 1 root root 40314 Dec 28  2021 nohup.out
drwxr-xr-x 3 root root  4096 Jan 26  2022 srvhub
drwxr-xr-x 2 root root  4096 Aug 12 08:57 upload
-bash-4.1# cat code/*.java >> aaaa.txt 
-bash-4.1# ll
total 180
-rw-r--r-- 1 root root 94210 Aug 17 09:48 aaaa.txt
drwxr-xr-x 4 root root  4096 Jul 15 10:54 amis
drwxr-xr-x 6 root root  4096 Aug 17 09:42 code
drwxr-xr-x 2 root root 24576 Aug 12 15:53 download
drwxr-xr-x 4 root root  4096 Aug 15 15:57 hidbm-vue
-rw------- 1 root root 40314 Dec 28  2021 nohup.out
drwxr-xr-x 3 root root  4096 Jan 26  2022 srvhub
drwxr-xr-x 2 root root  4096 Aug 12 08:57 upload
-bash-4.1# 

我们发现原来的aaaa.txt文件的大小为0,执行完合并命令后,他的大小变成了94210 ,说明合并成功了


相关文章
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
25 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
20 2
|
9天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
34 5
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
24 3
|
10天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
27 6
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
36 6
|
4月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
4月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
4月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
6月前
|
安全 网络协议 Linux
【专栏】Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。
529 0