`

sed命令 linux下的超强查找和替换命令

 
阅读更多

在维护magento的数据库 由于想修改部分数据 但是面对几百Msql文件 没有好的工具是不行的 把他下载到本地拿editplus编辑进行查找替换不行 会因为文件太大会出错, 这时sed就能解决这个问题

   sed是一个非常强大与实用的工具,在这里,我们只用到sed很有限的功能。如果你觉得这些非常有趣,我强烈推荐你阅读关于sed更多的功能,比如说man page

我们将要用下面这个语法来在一个文件中查找并替换字符串

# sed -i ’s/[orginal_text]/[new_text]/’ filename.txt

比如你有一个叫做database.txt文件,里面大量的存放了的数据库服务器IP地址。现在你刚刚更换了数据库服务器,需要更新这个文件里面的IP地址。旧IP地址是202.97.1.16,新的IP202.97.1.22。你只需要按下面简单的几个步骤:

# cat database.txt
LOCAL_DATABASE = 202.97.1.16

LOCAL_DIR = /home/calvin/
PROD_DB = 202.97.1.16
# sed -i ’s/202.97.1.16/202.97.1.22/g’ database.txt
# cat database.txt
LOCAL_DATABASE = 202.97.1.22
LOCAL_DIR = /home/calvin/
PROD_DB = 202.97.1.22

现在你可以打开database.txt这个文件,检查旧IP是不是被新IP所代替了。现在给大家解释一下上面这个命令。sed就是我们调用的命令,后面的参数-i代表的是代替。下面,我们需要使用一点正则表达式,通常也叫做regex。引号里面的字母s代表替换,最后的字母g代表全局。中间的就是一个表示替换规则的正则表达式。

你可以选择不加字母g,不过,这也就意味着你的替换不是全局的,事实上,它通常只会替换所配置内容的第一行。下面我们用一个实例来看看效果:

# cat database.txt
LOCAL_DATABASE = 202.97.1.16
LOCAL_DIR = /home/calvin/
PROD_DB = 202.97.1.16, 202.97.1.16
# sed -i ’s/202.97.1.16/202.97.1.22/’ database.txt
# cat database.txt
LOCAL_DATABASE = 202.97.1.22
LOCAL_DIR = /home/calvin/
PROD_DB = 202.97.1.22, 192.168.1.16

下面我们来点真正神奇的东西。现在,假设你想要更改不只一个文件中而是当然目录底下所有文件中的某些字符串。你需要将若干文本文件中的wine改为champagne

# find . -maxdepth 1 -name “*.txt” -type f -exec sed -i ’s/wine/champagne/’ {} \

我们使用find命令,也就是“find . -maxdepth 1 -name “*.txt” -type f”这部分,来获取当前目录中所有的文本文件列表。而其中的“find . maxdepth 1”部分告诉计算机只查找当前目录,而且不查找子目录的内容。'-name “*.txt”’部分代表只查找以“.txt”为后缀名的文件。然后,“-type f”部分表示只查找普通文件,而不查找目录文件之类的特殊文件。最后,“-exce”部分,代表对查找到的结果执行后面的命令。在这里,也就是对查找到的结果执行“sed -i ’s/wine/champagne/’ {} \”这个命令。(其中{}代表的是查找到的结果)

如果担心进行了错误替换,可以在-i命令后带后缀进行备份,比如:
sed -i.bak 's/202.123.23.12/localhost/g' *.xml

但应注意:替换命令后只需要有g命令,不能再加p命令。可能上面的命令看起来有点复杂。但是,只有你一旦使用,你就会意识到它的确值得你记录下来并且使用。

分享到:
评论

相关推荐

    Linux下sed命令的用法

    sed命令擅长于进行文本的快速查找、替换、删除等操作。本文将详细解读sed命令在Linux环境下的用法,包括其基本语法以及常见用例。 首先,sed命令的基本语法格式为: ``` sed [选项] '脚本' [文件] ``` 其中,选项...

    linux sed命令详解

    可以对文本中的字符串进行查找和替换操作。 - 例如:`1,20s/old/new/g` 表示在第1至20行中将所有的“old”替换为“new”。 #### 实例演示 1. **删除第2至5行**: ```bash nl /etc/passwd | sed '2,5d' ``` ...

    windows下cmd程序sed命令所需文件

    在Windows环境下,`cmd`命令行工具通常用于执行各种系统级操作,而`sed`(流编辑器,Stream Editor)是Unix/Linux系统中一个强大的文本处理工具,它在Windows下的应用可能需要额外的配置。本篇文章将详细介绍如何在...

    linux sed 命令详解

    Linux中的`sed`(Stream Editor)命令是一种强大的文本处理工具,它能对输入流(标准输入、文件或者管道)进行实时处理。`sed`的工作方式是读取一行文本,对其进行处理,然后输出,接着处理下一行,直到文件末尾。这...

    Linux shell 用sed命令在文本的行尾或行首添加字符

    sed 命令是 Linux shell 中的一个流编辑器,可以用来对文本进行各种处理操作,例如,添加、删除、替换文本中的字符。今天我们将讨论如何使用 sed 命令在文本的行尾或行首添加字符。 添加字符到行首 要添加字符到...

    linux script 好用的sed命令

    在Linux和Unix环境中,sed广泛用于数据转换、文本替换、删除、添加、插入等操作。通过熟练掌握sed命令,我们可以高效地对大量文本进行自动化处理。 ### sed命令的语法 sed命令的基本格式为: ```bash sed [option]...

    LINUX_sed命令详解

    **Linux中的sed命令详解** `sed`(流编辑器,Stream Editor)是Linux系统中一个强大的文本处理工具,常用于处理文件或从输入流中过滤数据。它可以在不改变原文件的情况下,对文本进行查找、替换、删除等操作。下面...

    快速理解linux流编辑器sed命令

    ### 快速理解 Linux 流编辑器 sed 命令 #### 一、sed 命令简介 `sed` 是 `stream editor` 的缩写,作为一种非交互式的流编辑器,它主要用于文本数据的过滤和转换。不同于 `vi` 或 `vim` 这类编辑器,`sed` 不会...

    Linuxsed批量替换字符串方法.pdf

    sed支持正则表达式,可以快速地对文件中的特定字符串进行查找和替换,批量修改文件内容等操作。下面详细介绍sed命令在批量替换字符串方面的几种常见方法。 1. 基础替换 sed的替换功能基本语法是`sed 's/原字符串/新...

    Linux Shell脚本编程--sed命令详解.zip_shell sed_命令介绍_脚本 shell

    理解并熟练掌握`sed`命令,对于提高Linux系统的自动化维护和数据处理能力大有裨益。在编写Shell脚本时,善用`sed`能够使你的脚本更加简洁、高效。通过不断的实践和学习,你可以发掘出`sed`更多强大的功能,解决各种...

    linux命令中Sed各种使用方式

    Sed 的转换字符命令的语法是 `y[address]y/SET1/SET2/`,其中 `address` 是行号或行号范围,`SET1` 和 `SET2` 是要转换的字符集。 例如,`sed 'y/abcde/ABCDE/' filename` 将文件中的小写字母转换成大写字母。 ...

    在linux文件中查找并替换

    本文将详细介绍在Linux环境下进行文件查找与替换的方法,包括常用的命令工具如`sed`和`vi`(或`vim`)等,并通过具体示例加以解释。 #### 二、sed 命令 **sed** 是一个强大的流编辑器,用于处理文本文件中的数据流...

    Linux使用sed命令替换字符串教程

    在Linux系统中,`sed`(流编辑器,Stream Editor)是一个强大的文本处理工具,用于在输入流中进行模式匹配和替换操作。本文将详细介绍如何使用`sed`命令来替换字符串,并探讨其相关的选项和用法。 ### 基本替换语法...

    Linux/Unix sed命令中文详解图

    处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并...

    Linux-02sed.ppt

    sed命令的常用操作:主要介绍sed命令的注释方法,打印文本,替换文本,删除文本,追加文本,插入文本,移到下一行,读写文件以及多行模式等。 组合命令:主要介绍如何在sed中组合多条命令以及如何将多条命令应用到一...

    在shell中调用sed命令实现对配置文件的替换操作

    在本文中,我们将深入探讨如何使用Shell中的`sed`命令来对配置文件进行替换操作,特别是针对与Linux、uboot和buildroot相关的配置文件。`sed`(流编辑器)是一个强大的文本处理工具,它可以对输入流(标准输入或其他...

    sed命令调研文档(PDF)

    sed(stream editor)是一种非交互式的文本流编辑器,主要用于在Linux和UNIX系统中处理文本文件。与大多数面向屏幕的编辑器(如Microsoft Word等)不同,sed在执行编辑任务时不会与用户交互,而是根据预设的命令自动...

    Linux sed 教学PPT

    `sed`广泛应用于文本的查找、替换、删除等操作,尤其在脚本中使用频繁,可以实现自动化文本处理。 **一. 什么是流编辑器?** 流编辑器,顾名思义,是处理数据流的一种编辑器。与传统的交互式文本编辑器不同,`sed`...

    sed命令大全

    在处理文本时,sed支持使用正则表达式,这使得匹配和替换操作非常灵活。例如,可以使用正则表达式的量词和特殊字符来精确地匹配字符串: +、?、(、)这些符号需要被转义,以确保它们被当作普通字符处理。 而字符集合...

    linux中批量查找替换文本内容例子.docx

    在 Linux 系统中,批量查找和替换文本内容是一个非常常见的操作。下面是Linux中批量查找替换文本内容的一些实例: 1. 使用 grep 命令批量查找文件内容 grep 命令是 Linux 中最常用的查找命令,它可以根据关键词在...

Global site tag (gtag.js) - Google Analytics