Unix sed编辑器如何读写文件操作

本文将展示如何将文件内容读入到sed输出,同时包含如何将一个文件的部分内容写入到另一文件

一.文件读取

假定有两个文件,file1和file2,内容分别如下:

$ cat file1
1apple
1banana
1mango

$ cat file2
2orange
2strawberry

sed有两个选项用来读写文件

r filename : 读取filename指定的文件内容
w filename : 将内容写入filename指定的文件

看例子:

1.在file1的每一行读完之后读取file2的内容

$ sed ‘r file2’ file1
1apple
2orange
2strawberry
1banana
2orange
2strawberry
1mango
2orange
2strawberry

r file2读取file2的所有内容,因此r之前没有知道那个行号或匹配,因此有了上面的输出,记住,sed的工作机制,每次读file1的一行,然后执行命令

2.如何在读取了file1的第一行之后将file2读入

$ sed ‘1r file2’ file1
1apple
2orange
2strawberry
1banana
1mango

r前面加个1就行了

3.当file1某行匹配了模式之后,读入file2

$ sed ‘/banana/r file2’ file1
1apple
1banana
2orange
2strawberry
1mango

sed逐行读入file1,然后判断该行是否匹配banana,如果匹配,就读入file2

4.当file1读取完成后读入file2,其实就是合并两个文件

$ sed ‘$r file2’ file1
1apple
1banana
1mango
2orange
2strawberry

这里只是演示一下,其实cat file1 file2就可以完成合并

二.文件写入

使用一个file1文件,内容如下:

$ cat file1
apple
banana
mango
orange
strawberry

1.将file1的2-4行写入到file2

$ sed -n ‘2,4w file2’ file1

2,4w就是写2-4行的意思,那-n呢?
默认情况下sed会把读入的文件处理的结果输出到标准输出,也就是终端,而为了不使用默认输出,-n就派上用场了,执行该命令终端不会有任何输出

$ cat file2
banana
mango
orange

查看file2内容,发现已经写入成功了

2.从第三行开始全部写入file2

$ sed -n ‘3,$w file2’ file1

$ cat file2
mango
orange
strawberry
不多解释了

3.如果是用正则呢?

$ sed -n ‘/apple/,/mango/w file2’ file1

$ cat file2
apple
banana
mango
该命令将逐行读入file1,然后判断该行是否匹配apple,如果匹配,则作为起始行,然后继续读入,判断是否匹配mango,如果是,则作为终止行,然后将中间的内容写入到file2

时间: 2024-07-29 13:38:52

Unix sed编辑器如何读写文件操作的相关文章

Unix sed编辑器如何替换文件内容

本节将使用sample1.txt文件作为示例,文件内容如下,都是些水果..: apple orange banana pappaya 1.向每一行的开头添加内容,这里我们添加"Fruit:" $ sed 's/^/Fruit: /' sample1.txt Fruit: apple Fruit: orange Fruit: banana Fruit: pappaya 解析:s代表substitution,也就是替换,s之后是要替换/匹配的内容,斜线/用来分隔s以及要替换的原始内容还有要

C++读写文件操作代码

C++读写文件操作代码 常量 值 说明 fmOpenRead 0 以只读属性打开 fmOpenWrite 1 以只写属性打开 fmOpenReadWrite 2 以读/写属性打开 fmShareCompat 0 兼容FCB方式(汇编中有相应的DOS功能调用,感兴趣自已查阅相关资料 ) fmShareExclusive 16 共享方式:以独占方式打开,在关闭以前,别人不能访问 fmShareDenyWrite 32 共享方式:拒绝写访问 fmShareDenyRead 48 共享方式:拒绝读访问

php fopen 函数 读写文件操作

php fopen 函数 读写文件操作 function getFile($url) {     if($f=fopen("$url","r"))     {         while(!feof($f))         {             $s.=fgets($f);         }         fclose($f);         return $s;     } else {         return false;     }   

python读写文件操作示例程序

 日常操作中,少不了文本处理,如程序输入数据准备,python凭借其简洁优雅的语法,在文本处理上比C++等编译型语言开发效率高出一大截,下面看代码 文件操作示例     复制代码 代码如下: #输入文件 f = open(r'D:Python27pro123.bak')  #输出文件 fw = open(r'D:Python27pro123e.bak','w') #按行读出所有文本 lines = f.readlines() num = -1 for line in lines:     str

python读写文件操作示例程序_python

文件操作示例 复制代码 代码如下: #输入文件f = open(r'D:\Python27\pro\123.bak') #输出文件fw = open(r'D:\Python27\pro\123e.bak','w')#按行读出所有文本lines = f.readlines()num = -1for line in lines:    str = '@SES/%i/' %num    line = line.replace('@SES/1/',str)    num = num + 1    #写入

oracle中utl_file包读写文件操作实例学习_oracle

在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 1.创建directory,并给用户授权 复制代码 代码如下: --创建directory create or replace directory TESTFILE as '/home/oracle/zxx/test'; --给用户授权 grant read, write on directory TESTFILE to zxx; 详细介绍 http://download.oracle.com/docs

php 读写文件操作

 function read($filename,$filesze)  {   $fp=fopen($filename,"rb");//用fopen rb  属性读取文件并用flock lock_sh,lock_un来解锁   if($fp)   {    flock($fp,LOCK_SH);    clearstatcache();    $filesize=filesize($filename);    if($filesize>0)    {     $data=frea

求VC读写文件操作的达人进来指导下小弟哦

问题描述 由于我的程序功能需求,需要读入一个txt格式的文件.这个文件时ansys导出的数据文件,他的内容格式啊什么可以看下面的黏贴,读入这个文件后我需要把前面四列数据存到一个点的链表,链表的定义是Array<point3d>node;(point3d就是一个三维点类型,有xyz坐标,和下面的2.3.4列对应),小弟不才,试了好几天都不行,主要原因在于自己基础不好,而且这个文件的数据值中有个E这个东西卡住了,而且每行的开头都有好多的空格啊.哎,我实在没办法了.希望论坛的高手能帮帮我啊..bes

PHP进行读写文件操作

<?    function readfromfile($file_name) { //File Reading     if (file_exists($file_name)) {         if (PHP_VERSION >= "4.3.0") return file_get_contents($file_name);         $filenum=fopen($file_name,"r");         $sizeofit=files