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”

sed 文件查找,替换的更多相关文章

  1. sed(查找替换) 与awk(提取字段)

    通常: sed 处理列  awk处理行 比较方便 Sed是一个基本的查找替换程序     sed -i   "s/^@//g"     文件  #原地操作原文件,进行替换 cat ...

  2. Linux使用vim进行多文件查找和替换的方法

    vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...

  3. 使用 sed 命令查找和替换文件中的字符串的 16 个示例

    当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...

  4. linux 批量文件查找并替换

    linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...

  5. VIM批量文件查找和替换

    使用vim时间不长,linux命令行下常用的文本编辑工具,所以需要掌握一些基本的用法.很多不会的不是百度就谷歌,总有你想要的答案. 1. 批量文件查找内容 vimgrep 比如在当前目录下查找带有“a ...

  6. sublime text3怎么批量查找替换文件夹中的字符

    在编写代码的时候,往往有些代码是重复的,但是如果要改一处代码,其他的地方也要改.那么怎么批量修改呢?下面小编就以sublime text3为例来讲解一下sublime text3怎么批量查找替换文件夹 ...

  7. servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本

    package servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...

  8. 文件6. 查找替换.txt文本文件中的内容

    servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...

  9. sed `grep` 查找并替换

    sed "s/libletvwatermark/libletv_watermark/" `grep -rl libletvwatermark` grep [options] 3.主 ...

随机推荐

  1. 在Prefetcher中取消robots.txt的限制

    Robots.txt是一种专门用于搜索引擎网络爬虫的文件,当构造一个网站时,如果作者希望该网站的内容被搜索引擎收录,就可以在网站中创建一个纯文本文件robots.txt,在这个文件中,声明该网站不想被 ...

  2. [翻译]如何用YII写出安全的WEB应用

    前言 虽然本文是基于YII1.1,但其中提到的安全措施适用于多数web项目安全场景,所以翻译此文,跟大家交流.原文地址. 目录 安全基本措施... 2 验证与过滤用户的输入信息... 2 原理... ...

  3. sqlserver存储过程及易错点

    create PROCEDURE [dbo].[xiao_adduser] @username NVARCHAR(), @password NVARCHAR(), @adddate DATETIME ...

  4. CSS 与 HTML5 响应式图片

    什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS3 响应式图片 对于很 ...

  5. C#学习日志 day 4 ------ 类相关---this指针以及相关关键字

    c#中的类和java中的类没什么太大区别.但是c#有些特有的关键字以及属性使得c#具有一些特性. 首先就是this关键字,this在c++和java中都有,可以表示当前对象,以及变量所属对象等.例如 ...

  6. [C++]Store Credit——Google Code Jam Qualification Round Africa 2010

    Google Code Jam Qualification Round Africa 2010 的第一题,很简单. Problem You receive a credit C at a local ...

  7. IOS 特定于设备的开发:检查设备接近度和电池状态

    UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...

  8. liunx使用技巧

    1.挂载与卸载U盘 新建一个目录:mkdir /mnt/usb; Fdisk –l |less  查看添加之后的设备名,设备文件系统格式 加载U盘设备: mount –t vfat /mnt/usb ...

  9. 《转》使用JAVA如何对图片进行格式检查以及安全检查处理

    本文出自冯立彬的博客,原地址:http://www.fenglibin.com/use_java_to_check_images_type_and_security.html 一.通常情况下,验证一个 ...

  10. WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效

    procedure TForm1.WMSysCommand(var Message: TWMSysCommand); var str: string; begin case Message.CmdTy ...