Sed

Linux 删除文件的特定行(第一行,前n行,最后一行)

当我们编辑文件的时候时候,我们通过可以vi/vim编辑器来删除文件中的特定行,比如删除第一行或者删除最后行或者符合某个模式的行。 但是如何在shell脚本里来删除特定的符合条件的行呢。 这时候,我们可以使用linux下强大的文本处理工具sed。 我们可以通过该命令删除指定的行,或者通过sed命令提供的正则表达式,来查找符合模式匹配的行,然后将其删除。 删除文件的第一行 如果要删除文件的行,并将其立即应用到源文件,在sed命令里需要使用-i 选项,否则,只是将删除文件内容显示出来,但不会真正的删除文件的内容。 执行下面的命令: # sed -i ‘1d’ fio.txt 命令输出如下: [email protected]:~/osetc# cat fio.txt line1  a line2  b line3  c [email protected]:~/osetc# sed -i ‘1d’ fio.txt [email protected]:~/osetc# cat fio.txt line2  b line3  c… read more »

CentOS/linux:如何查找目录下文件中是否包含指定字符串

在centos linux系统下查找文件中是否包含特定的行是经常会做的事情。那么如何来查看特定目录下的文件中是否包含特定的字符串呢?我们可以使用linux find命令来实现。 输入下面的命令: 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。 (2)基本元字符集及其含义 ^ :只匹配行首。 如^a 匹配以a开头的行abc,a2e,a12,aaa,…… $ :只匹配行尾。 如^a 匹配以a结尾的行bca,12a,aaa,……. * :匹配0个或多个此单字符。 如(a)* 匹配 空,a,aa,aaa,…. [] :只匹配[]内字符。可以是一个单字符,也可以是字符序列,用”,”将里面要匹配的不同字符串分开。也可以使用-来表示[]内字符序列的范围,如[1-5]表示[12345] \ :只用来屏蔽一个元字符的特殊含义。 如\*,\’,\”,\|,\+,\^,\. 等 .:(点)只匹配任意单字符。 pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数。如a\{2\}匹配aa. pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa,aaaa,….. pattern\{n,m\}:含义同上,但次数在n和m之间。如a\{2,4\}匹配aa,aaa,aaaa三个 (3)举例说明: ^$ :匹配空行 ^.$… read more »

linux下sed命令的工作原理/过程

Sed编辑器逐行处理文件,并将输出结果发送到屏幕上。sed的命令就是在vi和ed/ex编辑器中见到的那些。sed命令在处理的时候会把当前正在处理的行保存在一个临时的缓存区中,这个缓存区称为模式空间或者临时缓冲。sed在处理完模式空间中的行后,就把该行发送到屏幕上。 sed每处理完一行就将其从模式空间中删除,然后将下一行读入空间,进行处理和显示输出。处理完输入文件的最后一行后,sed命令就结束了运行。sed命令会把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改或破换原来的文件。 sed工作原理图:

linux下的流编辑器sed介绍

sed是一种新型的非交互式的编辑器,它能执行与编辑器vi相同的编辑任务。sed编辑没有提供交互式的使用方式,使用者只能在命令行输入编辑命令,指定文件名,然后再屏幕上查看输出信息。 sed编辑器没有破环性,它不会修改文件, 除非使用shell重定向来保存输出的结果,默认情况下,所有的输出行都会被打印到屏幕上。 sed编辑器在shell脚本中很有用,因为在shell脚本中使用vi这种交互式编辑器,要求脚本用户精通该编辑器,而且还会导致用户对打开的文件作出不需要的修改。 在linux下,如何查看sed的不同版本号? linux下使用的sed是GNU版本,版权归自由软件基金会所有。查看sed的版本号可以通过下面的命令: sed -V 或者 sed –version 示例输出如下: [[email protected] ~]# sed –version GNU sed 版本 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for… read more »

Sidebar