文件处理命令:sed

使用:sed [-nefr] action
action:-i直接修改读取的档案内容,而不是由屏幕输出,-r表示支持延伸型正则表达式的语法。
动作说明:[n1[,n2]] function n1,n2表示要选择的行数,function包括:
a-新增,c-取代,d-删除,i-插入,p-打印,s-取代(可以直接进行取代的工作,例如 1,20s/old/new/g)

1 替换第一个匹配的内容

[[email protected] ~]# echo " This is a test1 test2"|sed ‘s/test/TEST/‘
 This is a TEST1 test2

2 替换所有匹配的内容

[[email protected] ~]# echo " This is a test1 test2"|sed ‘s/test/TEST/g‘
 This is a TEST1 TEST2

3 -i 直接修改源文件

sed -i “s/my/Rango Chen‘s/g” pets.txt

4 在每一行最前面加上#

[[email protected] ~]# sed ‘s/^/#/g‘ pets.txt
#This is my cat
#my cat‘s name is betty
#This is my dog
#my dog‘s name is frank
#This is my fish
#my fish‘s name is george
#This is my goat
#my goat‘s name is adam

5 在每一行的末尾加上---

[[email protected] ~]# sed ‘s/$/ --- /g‘ pets.txt
This is my cat ---
my cat‘s name is betty ---
This is my dog ---
my dog‘s name is frank ---
This is my fish ---
my fish‘s name is george ---
This is my goat --- 

6 只替换第3到第6行的文本

[[email protected] ~]# sed "3,6s/my/your/g" pets.txt
This is my cat
my cat‘s name is betty
This is your dog
your dog‘s name is frank
This is your fish
your fish‘s name is george
This is my goat
my goat‘s name is adam

7 只替换第3行的文本

[[email protected] ~]# sed "3s/my/your/g" pets.txt
This is my cat
my cat‘s name is betty
This is your dog
my dog‘s name is frank
This is my fish
my fish‘s name is george
This is my goat
my goat‘s name is adam

8 只替换每一行的第二个s

sed ‘s/s/S/2‘ my.txt    2表示第二个

9 一次替换多个模式,每个模式之间用;进行间隔

sed ‘1,3s/my/your/g; 3,$s/This/That/g‘ my.txt
sed -e‘1,3s/my/your/g‘ -e ‘3,$s/This/That/g‘ my.txt

基础的正则表示法特殊字符:

^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。如\<abc 表示以abc 为首的詞。
\> 表示词尾。如 abc\> 表示以abc 結尾的詞。
\ 将特殊字符进行转义,还原其本身意义:grep -n \‘ pets.txt 搜寻含有单引号‘的那一行。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示取反,如[^a]表示非a的字符
\{n,m\} 连续n到m个的“前一个RE字符” grep -n ‘go\{2,3\}g‘ 1.txt 在g与g之间有2到3个o存在的字符串,亦即(goog)(gooog)

时间: 2024-09-29 01:21:16

文件处理命令:sed的相关文章

Linux 命令---- sed

sed 命令:  常用场景:1. 在指定位置增加内容2. 删除指定字符所在的行:3. 替换指定字符串为新的字符串:4. 只显示包含指定字符的内容 Answer:-i: 表示将修改直接持久化到文件中1.>sed -i '/test/a\one\ntwo' test.txt // 在存在test字符串的行后添加one 然后换行添加two 注: 不用加 g选项 就默认把符合条件的都加入 a\ 后面的内容 加入一行默认是自动换行:最后一行不用加 \n >sed -i '#test_3#a\two' t

linux查看日志文件内容命令tail、cat、tac、head、echo

tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -n 3000 | tail -n +1000 *注意两种方法的顺序分解:ta

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

linux下的文本处理命令sed&amp;awk&amp;grep

Sedsed 是个精简的.非交互式的编辑器.他能执行和编辑vi和emacs相同的编辑任务.sed编辑器不提供交互使用方式:只能在命令行输入编辑命令.指定文件名,然后在屏幕上察看输出.sed编辑器没有破坏性.他不会修改文件,除非用shell重定向来保存输出结果.缺省情况下,所以的输出都被打印到屏幕上.sed 编辑器在shell脚本中非常有用,因为在shell脚本中使用像vi或emacs这类交互式编辑器,需求脚本用户精通该编辑器,而且还会导致用户对打开 的 文件做出不必的修改.如果需要执行多项编辑任

一天一命令-sed

一天一命令-sed sed - stream editor for filtering and transforming text sed 4.2.2 sed是一种流编辑器,读取一行,处理一行,输出一行.sed先读取文件中的一行内容存储到被称为模式空间(pattern space)的临时缓冲区中,接着根据设定的条件来处理缓冲区中的内容,多个条件则多次处理,处理完成后,输出到屏幕,接着读取和处理下一行.源文件内容并没有改变,除非使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对多个文

Linux文本处理命令“sed”简解

文本处理编辑命令sed 命令格式: sed [选项] '(截取的行)[动作]' 文件名 选项:-n:只把经过sed处理的行输出 -e:允许输入多条动作 -i:sed修改的结果写入文件 截取行:(1)直接输入行号 (2)/正则表达式/ (3)x,y 从x到y行,也可以用正则取代 (4)x,y! 取反 (5)x~y 从x行开始,步进y行 (6)$ 文档末 动作:p  打印   eg: sed -n '(行)p' student.txt a  行后增加新的一行,i  行前增加新的一行 sed  '1,

Linux查找并删除重复文件的命令行fdupes工具,dupeGuru图形工具

查了几十个网页,找到这个接近满意的解决方案http://unix.stackexchange.com/questions/146197/fdupes-delete-files-aft... 不过正则里面的叹号好像不能起到清除空行的效果,改为d;fdupes --recurse A/ B/ | sed '/^A/d; /^$/d; s/.*/"&"/' | xargs rm 但还有个小问题,如果A里面有重复的文件,但这文件不在B中,fdupes也是会列为结果,导致误删,要再想想

linux查看日志文件内容命令tail、cat、tac、head、echo详解

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -

Linux常用命令——sed

sed 字符流编辑器 sed 是Stream Editor(字符流编辑器)的缩写,简称刘编辑器.sed 是操作.过滤和转换文本内容的强大的工具.常用功能包括对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤制定字符串)取行(取出指定行)语法格式:sed[选项][sed内置命令字符][输入文件]注意:1.sed 以及后面的选项.命令和输出文件,每个元素之间都要至少要有一个空格 参数选项: 参数 说明 -i 直接修改文件内容 -n 静默模式,仅打印和sed命令匹配的内容 -r 支持

shell 文件内容替换 sed用法

调用sed命令有两种形式: sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 删除:d命令 $ sed '2d'   example-----删除example文件的第二行. $ sed '2,$d' example-----删除example文件的第二行到末尾所有行. $ sed '$d' example-----删除example文件的最后一行. $ sed '/test/'d example-----删除