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 ,说明合并成功了


相关文章
|
3天前
|
Linux Python Perl
Linux命令删除文件里的字符串
Linux命令删除文件里的字符串
15 7
|
4天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3天前
|
安全 Linux 数据安全/隐私保护
探索Linux操作系统的文件权限管理
【9月更文挑战第29天】在数字世界中,文件权限管理如同保护我们隐私的锁。本文将带你了解如何在Linux系统中设置和管理文件权限,确保你的数据安全。我们将一起学习如何通过命令行工具来控制文件访问,就像学习一门新语言一样有趣。准备好了吗?让我们一起开启这场技术之旅!
|
5天前
|
Linux
深入理解Linux中的cp命令:文件与目录的复制利器
深入理解Linux中的cp命令:文件与目录的复制利器
|
3月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
3月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
3月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
5月前
|
安全 网络协议 Linux
【专栏】Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。
403 0
|
5月前
|
Kubernetes Linux Shell
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
114 0
|
12月前
|
Shell Linux Perl
65Linux - RPM 命令参数使用详解
65Linux - RPM 命令参数使用详解
56 1
下一篇
无影云桌面