`

sed 文件查找,替换

Sed 
阅读更多


sed 命令查找与替换:


(1)删除第2,3行:sed '2,3d' test.txt > new.txt

(2)替换:
 替换所有:sed 's/abc/ABC/' test.txt >new.txt
 查找:    sed  -n "/abc/p" test.txt

 匹配字符串中的一部分: echo abc123 | sed 's/\([a-z]*\).*/\1/'

 echo "ab001_ac" | sed 's/\(.*\)\_\(.*\)/\1,\2/'      \1表示第一个括号匹配的字符
 echo "ABC01" | sed "s/[A-Z]*\([0-9]*\)/\1/"           \1匹配后面的数字部分

 echo "ab001_AC88" | sed 's/[A-Z]*\([0-9]*$\)/\1/'

 echo "a001_aaST88" | sed "s/\(.*\)\([A-Z][A-Z]\)\([0-9]*$\)/\2/"

sed "s/^/\"&/" <31.txt >32.txt 行首添加双引号
sed "s/$/\"&/" <32.txt >33.txt 行尾添加双引号
sed "s/[ ]*$//" <34.txt >35.txt 替换行尾空格


 只显示指定行范围的文件内容,例如:

# 只查看文件的第100行到第200行
sed -n '100,200p' mysql_slow_query.log

sed -n $n"p" 22.txt  显示某一行  n=2

sed大小写转换?


如何先查找,再追加所查找的行到一个新的文件:

 

(3)查找Tab:
sed "s/[ ]\{2,\}/\|/g"          查找Tab,查找多空格,单独一个空格的除外

awk '/3\t/' 34.txt  查找\t

sed -n '/3[[:space:]]/p' 34.txt  查找空格

sed "/\\t/p" 34.txt  查找tab

 echo "\tabc\t23" | sed 's/[[:tab:]]/-/' 替换tab

sed -n '/[[:space:]]*/p' 34.txt  查找tab
如何只替换第2个\t?

(4)
行末空格
sed 's/[ \t]*$//g'


(5)替找空格:
echo "abc  23" | sed 's/[ ]\{2,\}/ /'  把多个空格替换成一个空格

(3)
如果你想在每行的80个字符后加一个冒号,你可写:
sed ‘s/./&:/80’ < file > new

    你也可以以蛮力解决,如下:
sed 's/^................................................................................/&:/' <file >new

(4)找一个sed命令在文件每一行加一个变量的例子:
 sed 's/.*/&-/' <20.txt >new.txt

用&作为匹配的串
有时你想查找一个模式,然后加上几个字符,比如在匹配的串前后加上括号。如果你是找一个确定的字符串,还是比较简单的,如下即可:
sed ‘s/abc/(abc)/’ < old > new

如果你不是非常清楚你将找到的是串是什么,那你应该如果来利用你找到的串做某种替换呢?
答案就是你需要一个特定的字符”&”,它即指代匹配的模式
sed ‘s/[a-z]*/(&)/’ < old > new

你可以在替换时多次使用”&”,比如,你可以次每行开头的数字复制一次,如下:
% echo “123 abc” | sed ‘s/[0-9]*/& &/’

123 123 abc

让我再修正一下这个例子,sed会以贪婪的方式匹配第一个串。对于’[0-9]*’的第一个区配是第一个字符,因为这个正则是匹配0个或多个数字。所以如果输入是”abc 123”,输出也不会改变(当然,除了有一个空格在字母之前)。一个能保证能匹配一个数字的更好的复制数字的方法是:
% echo “123 abc” | sed ‘s/[0-9][0-9]*/& &/’

123 123 abc

(5)sed 中如何使用变量(变量使用单引号包起来):

 echo "abc" | sed 's/ab/'$v'/'


如何在文件的每一行的最前面加一个字符串和空格!
sed 's/^/ttt /g' test


如何在文件的每一行的最前面加一个字符串和空格!
sed 's/^/ttt /g tese | sed 's/$/ sss\&/g'


如何在文件的每一行的最前面加一个字符串和空格!
sed 's/^/ttt /g tese | sed 's/$/ sss\&/g'

(7)匹配空行:
查找空行:sed -n "/^$/p" 20.txt
删除空行:sed "/^$/d" <20.txt >21.txt


n 不打印; sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑),p命令可以用来打印编辑行
      c 下一命令是编辑命令,使用多项编辑时加入此选项
      f 如果正在调用sed脚本文件,使用此选项,此选项通知sed一个脚本文件支持所用的sed命令,如
          sed -f myscript.sed input_file  这里myscript.sed即为支持sed命令的文件


(21) 只显示指定行范围的文件内容,例如:

# 只查看文件的第100行到第200行
sed -n '100,200p' mysql_slow_query.log

(22)退出状态
sed不向grep一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。

(23)y命令
该命令与UNIX/Linux中的tr命令类似,字符按照一对一的方式从左到右进行转换。例如,y/abc/ABC/将把所有小写的a转换成A,小写的b转换成B,小写的c转换成C。
 
sed '1,20y/hrwang12/HRWANG^$/' datafile
#将1到20行内,所有的小写hrwang转换成大写,将1转换成^,将2转换成$。
#正则表达式元字符对y命令不起作用。与s命令的分隔符一样,斜线可以被替换成其它的字符。

(24)% echo “123 abc” | sed ‘s/[0-9][0-9]*/& &/’

123 123 abc

字符串”abc”没有改变,因为它没有匹配正则表达式,如果你想在输出中删除”abc”,你必须扩展正则表达式来匹配行的其它的部分,并显式地用”(”,”)”和”\1”来指名,这就是下节的内容了。
用\1来指明匹配的部分
我已经在正则表达式那一章中介绍了”(” ”)”和”\1”的用法。现在复习一下,被转义的括号(即,有反斜杠在前面的括号)来记录正则表达的某一部分。”\1”是被记录的第一个模式,”\2”是第二个被记录的模式。Sed可以记录9个模式。
如果你想保存每行的第一个单词,并删除行的其它部分,你可以用下面的命令:
sed ‘s/\(\[a-z]*).*/\1/’

我应该再详细地解释一下。正则表达式是以贪婪的方式匹配。”[a-z]*”匹配0个或多个小写字母,它会尽量匹配更多的小写字母。”.*”会在第一个匹配后匹配0个或多个字符。因为第一个模式已经匹配了所有的小写字母,第二个模式会匹配剩下的字符,所以你使用命令:
echo abcd123 | sed ‘s/\([a-z]*\).*/\1/’

会输出”abcd”,而删除后面的数字。
如果你想调换两个单词的位置,你可记录两个模式,并改变它们的次序。
sed ‘s/\([a-z]*\) \([a-z]*\)/\2 \1/’

注意两个模式中间是有空格的。这个可保证找到两个单词。但是[a-z]*这种模式会匹配0个字母,如果你想至少匹配一个字母,你可以用下面的命令:
sed ‘s/\([a-z][a-z]*\) \([a-z][a-z]*\)/\2 \1/’

“\1”并不需要一定出现在替换串中(右部),它你也可以在查找的模式中(左部)。如果你想删除重复的单词,你可以用:
sed ‘s/\([a-z]*\) \1/\1/’

注意你最多使用9个值,从”\1”到”\9”

 

android入门实例:https://gitbook.cn/gitchat/activity/5d382e64b669c0566c335b32
 

 

 

 

 

 

分享到:
评论

相关推荐

    批量查找文件内容替换

    4. **命令行工具**:在Linux或Unix系统中,`grep`命令用于查找包含特定字符串的文件,而`sed`命令则可以进行流编辑,实现查找替换。例如,`grep -rl "search_string" /path/to/directory | xargs sed -i 's/search_...

    字符串查找替换(批量任何文件)

    本主题将深入探讨如何在批量任何文件中进行字符串查找替换,这涉及到多个技术层面,包括基本概念、实现方法以及相关的工具和编程语言应用。 一、基本概念 1. 字符串:在计算机科学中,字符串是由一个或多个字符...

    Linux_sed_批量替换字符串方法

    `sed`(stream editor)是一款功能强大的文本处理工具,在Linux系统中被广泛应用于批量处理文本文件,特别是进行字符串查找、替换等操作。本文将详细介绍如何使用`sed`进行批量替换字符串,并通过具体的例子来加深...

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

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

    txt文件中的查找与替换

    例如,PowerShell的`-replace`操作符就可以方便地完成查找替换:`Get-Content 文件名.txt | ForEach-Object { $_ -replace "查找字符串", "替换字符串" } | Set-Content 新文件名.txt`。 在编程语言中,查找与替换...

    linux下perl,sed,shell批量替换文件内容.docx

    其中,`sed -i` 命令将执行 sed 编辑器,`s/原字符串/新字符串/g` 是 sed 代码,用于执行字符串替换操作,`grep` 命令用于查找包含原字符串的文件,`-r` 选项用于递归查找,`-l` 选项用于显示文件名。 例如,要将...

    Linux查找替换文本编辑常用命令汇总

    Linux中tail,find,grep,sed,awk等,各个查找替换,常用命令,可以很好 的了解tail,find,grep,sed,awk等各个命令的各个参数的含义和用法,掌握Linux下查找替换的功能

    sed安装文件(dll拷到CWindowsSysWOW64,sed.exe拷到CWindowsSystem32).rar

    `sed`的强大在于它的命令集,可以实现查找、替换、删除、插入、排序等众多文本处理任务,极大地提高了程序员和系统管理员的工作效率。 在Windows系统中,由于默认并未内置`sed`命令,用户通常需要自行下载并安装。...

    在linux文件中查找并替换

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

    命令行下在文件中查找并替换匹配的字符串的工具

    当我们需要在大量文本文件中快速查找并替换特定字符串时,`sed`(Stream Editor)就是一个非常强大的工具。`sed` 是一个流编辑器,它可以从输入流(通常是文件或管道)中读取数据,对数据进行处理,然后将处理后的...

    批量查找替换重置.rar

    - **使用命令行工具**:如Linux的`sed`命令或Windows的`findstr`和`for /f`组合,能实现批处理查找替换。 - **编写脚本**:使用Python、Perl等编程语言,可以编写自定义脚本来实现批量查找替换,灵活度更高。 - *...

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

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

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

    首先,`sed`命令主要用于对文本文件进行搜索、替换、删除等操作,其语法结构通常为`sed [选项] '动作' 文件`。在Windows中,由于默认并不内置`sed`,我们需要下载并安装第三方实现,如GnuWin32或Git for Windows中的...

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

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

    sed-4.2.1.rar包括sed-4.2.1-setup.exe、sed-4.2.1-dep.zip、sed-4.2.1-bin.zip

    4. **模式匹配**:通过正则表达式实现对文本的模式匹配,用于查找或替换满足特定规则的文本。 5. **流式处理**:`sed`可以处理标准输入、输出和重定向,适合于管道操作,与其他命令组合使用。 6. **脚本编写**:`...

    sed.exe win x32 x64

    它支持对输入流(stdin)或文件进行读取、处理和写入数据,可以执行诸如查找、替换、删除等操作。 描述中提到的使用步骤如下: 1. 首先,你需要解压缩这个文件包。这个压缩包包含两个子文件,分别对应32位和64位的...

    Linuxsed批量替换字符串方法[归类].pdf

    Linux的sed(流编辑器,Stream Editor)是一个强大的文本处理工具,常用于处理文本文件中的字符串,例如批量替换。在给定的文件中,我们主要关注如何使用sed进行批量替换字符串的方法。 首先,一个基本的sed命令...

    sed命令替换文件内容

    格式: sed -i “s/查找字段/替换字段/g” `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 s表示替换,d表示删除 示例:sed -i “s/shan/hua/g” ...

    sed-4.2.1-setup

    1. **模式匹配与替换**:使用正则表达式来查找和替换文本。例如,`sed 's/old/new/g'` 命令会将所有出现的 "old" 替换为 "new"。 2. **行操作**:可以删除、插入、追加文本。例如,`sed '/pattern/d'` 会删除所有...

    sed and wak 101

    `sed`是一种流编辑器,用于对输入流中的文本进行各种操作,如查找、替换、删除等。其基本命令语法结构如下: ``` sed 'command' inputfile ``` 其中,`command`是实际执行的操作,`inputfile`是指定的文件名。 ##...

Global site tag (gtag.js) - Google Analytics