首页 > 系统相关 >Linux 系统替换字符串常用命令

Linux 系统替换字符串常用命令

时间:2023-08-19 14:31:51浏览次数:40  
标签:scm 文件 常用命令 修改 sed conf Linux 字符串 替换

概述

在 Linux 系统中有时候我们需要替换某个很长的字符串或者修改某个配置参数,有些文件又隐藏目录比较深,有些场景也需要在一个目录下批量去修改文件,那应该怎么高效,快速的去完成修改呢?下面记录一下本人实施过程中的一些方法,做个备忘手稿分享以备随时查看。


系统平台

CentOS Linux 7

Linux 系统替换字符串常用命令_字符串

第一种场景

同一个目录下,如何快速批量修改替换字符窜。

Linux 系统替换字符串常用命令_sed_02

先查看文件内容,找到需要替换的字符串,比如 admin.conf 文件内容如下。

Linux 系统替换字符串常用命令_vim_03

需要替换服务器 IP 192.168.59.138 

再查看其他的文件内容,找到需要替换的字符串,比如 kubelet.conf 文件内容如下。

Linux 系统替换字符串常用命令_字符串_04

也同样是需要替换服务器 IP 192.168.59.138,查看其他几个 *.conf 文件,也都同样是需要替换服务器 IP 192.168.59.138 字符串,应该怎么快速,高效的修改呢?

使用 vim **** 一个文件一个文件的修改?同一个目录下如有 1~2 个文件,那使用 vim 修改一下,到还是可以的。

那如果同一个目录下,有十几个或几十个文件,那还用 vim 修改,是不是就要疯了呢?如果老板在身后看着,那年底KPI末尾淘汰,是不是就该轮到你了呢?

这时候就可以使用下面的方法进行批量修改替换,速度效率也就高了很多。

Linux 系统替换字符串常用命令_字符串_05

# ls -lh
total 32K
-rwxr-xr-x 1 scm scm 5.6K Jun 16 20:30 admin.conf
-rwxr-xr-x 1 scm scm 5.6K Jun 16 20:30 controller-manager.conf
-rwxr-xr-x 1 scm scm 2.0K Jun 16 20:30 kubelet.conf
drwxr-xr-x 2 scm scm  113 Jun 16 20:30 manifests
drwxr-xr-x 3 scm scm 4.0K Jun 16 20:30 pki
-rwxr-xr-x 1 scm scm 5.5K Jun 16 20:30 scheduler.conf
#
# find . -name '*.conf' | xargs sed -i 's/59.138/59.149/g'
# cat admin.conf
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EWXhNREE0TXpNek1Wb1hEVE16TURZd056QTRNek16TVZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkcrClJHZ2lGR0FsdmF3UmtYT3V6V0NYU0QvVE00ZkNHRXhZWnYwYk1TMGtENGVicjBaWTV3Umk5eVp6a0Zxb3FSaUIKcmVKbzRjMkFHZk1zTzZqOGxuelllNkcrUitDeS93RTN6a3o1NXJBK2JkUTJUYzhlYzExR1dSY0hYYkdEaDQ5eApGWGRBR3hBTjlHMnprNDJ4dURmMzlXMlNzeFU5NVpuWXFmRk5tL0tOZzF1RlpabWJOZThFdm1lbkppYXpDVFB0ClhZMnpSM1lZMTZya0tIWHE2MmFUazNuMFNEbENlbWNPK2dQZUt0UGVVZ0cybWJ1a05VS0tKdkNXclgweVRiSC8KQjU5bkxEY3diNFRrcnZEUlp5TTl5VVdoZmtlTTY5TFNCOThUM09IbHM2MlNOMEVoQXRFeUViaCs0ZGxWU2JTbwpXNDFGR1lXemZTNzhFWTc5T1RrQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZFcjlRUVVYcGI2c0ttS3J5cG53ZTgzMUlYTzZNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRHR2ZFFpTjZsMXNOLzlSNzlvTgpTTnFrMVpEN3RhY2dwMTN3L1FJZ3J4a3U1UHU4bk5wQVJlRklGbSt3VGlhN1AxaWxDbmFMNytjd1pjSzJaaWxTCmlERTYrWTYxS0c1RFQ0Rml4UDVCajBGeVBJbVhRelFMdnNuMGNwRUtPWGN6b3ZrVGdtdlkxeXRuSmpUQ0IwM28KdS91bjFMaHRxZnEzdkNlUUUxMDRidHBaenQxbE9yZWNoemcwc2pNK1hPNGhBQWJGRjNRSnJjWUU0dC9SaXlaaQp5R29HZzJSMSs0T0NHS1NocWEyS2t1MFd3dFQ2L1NSRElUVjgwbUVYTVM0VVFJMW1Xb2xXaGR0Y1lkcnhEY28rCmNONUlXNmQwSm13OHlEbFhTVXEzN1h6TmtrNEVraHJ1SkJETzlMTCt3bElRdi9haWVSRVNvVzQzWUo1NTczUXAKNis4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://192.168.59.149:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}

再查看其他的文件,看看是不是都批量修改替换了。

# cat controller-manager.conf

Linux 系统替换字符串常用命令_vim_06

# cat kubelet.conf

Linux 系统替换字符串常用命令_字符串_07

可以看到,在相同目录下,就执行了上面的一条  # find . -name '*.conf' | xargs sed -i 's/59.138/59.149/g'   指令,就可以快速,高效的修改替换相同目录下所有文件里包含的字符串了,不用在打开文件,一个文件一个文件去修改了,这是不是就提高了工作效能呢?


第二种场景

一个文件里有多处相同的字符串需要修改,那需要怎么操作呢?

Linux 系统替换字符串常用命令_sed_08

此时可以使用另外一条指令,不用打开文件即可替换修改字符串,而且可以批量替换修改相同目录下的多个文件内容,而且还可以将旧文件用指定的扩展名来进行备份。

Linux 系统替换字符串常用命令_字符串_09

查看一下批量备份的文件,跟修改后的文件比较。

# diff etcd.yaml etcd.yaml.bak

Linux 系统替换字符串常用命令_sed_10

可以看到文件里多处需要替换修改的字符串,也都批量进行了替换修改,而且都把之前的文件做了批量备份,以防修改有问题,好查看好回滚文件。


第三种场景

那就是用 sed 命令,sed 命令表示 Stream Editor(流编辑器),用来在 Linux 上执行基本的文本操作。它可以执行各种功能,如搜索、查找、修改、插入或删除文件,也可以执行复杂的正则表达式匹配。

Linux 系统替换字符串常用命令_字符串_11

# sed -i 's/59.149/99.109/' etcd.yaml

Linux 系统替换字符串常用命令_字符串_12

可以看到上面执行的 sed 指令也替换了需要修改的字符串,使用格式: sed -i ‘s/查找字段/替换字段/g’ ***文件名

也可以使用下面的方式,在相同目录下,替换修改所有相同的文件。

# sed -i 's/59.149/99.109/' *.yaml
# sed -i 's/59.149/99.109/g' *.yaml


上面3种方式,就是本人经常使用到的指令,还有很多指令参数,在配合正则表达式组合起来使用,那功能会更加强大,同学们有时间可以深入学习研究,今天就分享到这,希望对各位有所帮助。



标签:scm,文件,常用命令,修改,sed,conf,Linux,字符串,替换
From: https://blog.51cto.com/wst021sh/7149993

相关文章

  • Linux常用网络配置练习(2)
    打开第二台虚拟机(带图形界面的虚拟机)使用浏览器访问一些网站,然后统计这些连接处于time-wait的数量[[email protected]]#netstat-an|grepTIME_WAIT|wc-l14打开两台Linux虚拟机,然后测试它们之间的TCP性能和UDP性能,并将结果记录下来##虚拟机01[root@test-server......
  • 【LeetCode2199. 找到每篇文章的主题】字符串处理题,使用MySQL里的group_concat和LOCAT
    题目地址https://leetcode.cn/problems/finding-the-topic-of-each-post/description/代码witht1as(selectp.*,k.*fromPostspleftjoinKeywordskonLOCATE(LOWER(CONCAT('',word,'')),LOWER(CONCAT('',conte......
  • linux下进程间通信
    进程间通信一、进程间通信的介绍1、进程间通信的概念进程通信(Interprocesscommunication),简称:IPC;本来进程之间是相互独立的。但是由于不同的进程之间可能要共享某些信息,所以就必须要有通讯来实现进程间的互斥和同步。比如说共享同一块内存、管道、消息队列、信号量等等就是实......
  • Linux命令
    常用命令命令ls-a这个选项能显示.开头的隐藏文件-i显示每个文件的inode号-m所有项目以逗号分隔,并填满整行行宽-R同时列出所有子目录层-h将列出文件的大小以人性化格式输出ls-lc[文件名]查看文件的访问时间ls-lu[文件名]查看文件的最后修改时间ls-l显示文件的......
  • linux下gcc/g++创建一个共享库项目以及创建一个可执行项目动态链接该共享库
    1.先确保有g++命令2.创建一个c++项目目录,并cd到该目录3.创建共享库头文件:dynamic_so.h#ifndef__TEST__#define__TEST__inttestFun(inta,intb);#endif4.创建对应共享库的实现文件:dynamic_so.cpp#include"dynamic_so.h"inttestFun(inta,intb){returna......
  • linux环境下基于python的OpenCV 保存视频
    一概念在OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称,A创建视频写入的对象out=cv2.VideoWriter(filename,fourcc,fps,frameSize)参数含义:filename:视频保存的位置fourcc:指定视频编解码器的4字节代码fps:帧率frameSize:帧大小B 设置视频的编解......
  • fastjson对接口参数的某个字段不打印输出,如文件的base64字符串
    fastjson对接口参数的某个字段不打印输出,如文件的base64字符串packagecom.example.core.mydemo.json5;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.annotation.JSONField;/**需要提供getset方法,如果使用@Datalombok不生效(关键)**publicclassIte......
  • 基于 Debian 12 的MX Linux 23 正式发布!
    MX Linux 是基于Debian稳定分支的面向桌面的Linux发行,它是antiX及早先的MEPISLinux社区合作的产物。它采用Xfce作为默认桌面环境,是一份中量级操作系统,并被设计为优雅而高效的桌面与如下特性的结合:配置简单、高度稳定、性能可靠、占用空间不大也不小。新版本......
  • Hadoop3.3.0--Linux编译安装
    Hadoop3.3.0--Linux编译安装本实验内容教程来源于“黑马程序员”如有侵权请联系作者删除基础环境:Centos7.7编译环境软件安装目录mkdir-p/export/server一、Hadoop编译安装(选做)可以直接使用课程提供已经编译好的安装包。安装编译相关的依赖yuminstallgccgcc-c+......
  • Linux unixODBC 连接 MySQL数据库
    LinuxunixODBC连接MySQL数据库1.下载unixODBC及MySQLConnector/ODBC1.1unixODBC下载https://www.unixodbc.org/ 1.2MySQLConnector/ODBC下载https://downloads.mysql.com/archives/c-odbc/选择版本选择:5.3.132. 安装驱动安装unixODBCtar-zxvfunix......