Linux 删除和替换文件中某一行的方法【推荐】

如果有一个abc.txt文件,内容是:

aaa
bbb
BATBUSINESSTYPE, INSIDEID--) ONLINE;
INSIDEID--) ONLINE
ccc
ddd
eee
fff

如果要删除ddd,那么脚本可以这样写:

sed -i '/ddd/d' abc.txt

如果删除的是一个变量的值,假如变量是var,应该写成:

sed -i '/'"$var"'/d' abc.txt

至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt中去的。

[asp@BJ-CP-7F-106-36 result]$ cat 11371_mobile_20110425.csv
20110425,北京,北京,13661189983
20110425,北京,北京,15810705979
WAPSJBBI_101>
WAPSJBBI_101>spooloff;
[asp@BJ-CP-7F-106-36 result]$ sed -i '/WAPSJBBI_101>/d'11371_mobile_20110425.csv
[asp@BJ-CP-7F-106-36 result]$ cat 11371_mobile_20110425.csv
20110425,北京,北京,13661189983
20110425,北京,北京,15810705979

从结果上看怎么就2行都删了呢?

答案是这样的:

sed 后面那个/d是删除的作用,写成sed '/WAPSJBBI_101>/d' 11371_mobile_20110425.csv其实就是在文件11371_mobile_20110425.csv里找到跟 “WAPSJBBI_101>”匹配的行,然后删掉。因为原文中含有“WAPSJBBI_101>”的行是2个,因此就2个一口气都删除了。

删除:d命令

$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。

在看看以前我常写的sed 's/|/,/g' aaa.txt>bbb.txt 这个的意思就是把aaa.txt文件中所有字符串|都换成,这是怎么表示的呢?S代表字符串,g表示行内全面替换。

替换:s命令

$ sed 's/test/mytest/g' example
-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
$ sed -n 's/^test/mytest/p' example
-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example
-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。
$ sed -n 's/able/\1rs/p' example
-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example
-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
cat init.ora | grep -v  ^#|grep –v ^*  > initprod.ora

总结

以上所述是小编给大家介绍的Linux 删除和替换文件中某一行的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • linux 不删除文件,清空文件中内容的命令

    在某些时候,需要清空文件内容,而不删除文件.比喻有些日志文件(log.txt):在linux下的命令为:true >log.txt 测试结果: touch log.txt →#新建文件log.txt vi log.txt →#编辑文件 随便输入什么东西 :wq!回车 →#保存退出: cat log.txt →#查看 文件内容: true >log.txt →#查看文件里面的内容: 附: rm -r 删除目录,不管目录中有没有文件 rm -rf 强制删除,没有提示 一般用到的就这两个,删除文件可

  • Linux中删除文件内空行的4种方法

    在Linux上处理一些数据文件时,有时候需要将其中的空行过滤掉,系统中提供的各种工具都可以完成这个功能.将常用的介绍如下吧:1. grep 复制代码 代码如下: grep . data.txtgrep -v '^$' data.txtgrep '[^$]' data.txt 2. sed 复制代码 代码如下: sed  '/^$/d' data.txtsed '/^\s*$/d' data.txt   #这个命令还可将完全空格.tab等组成的空行删掉.# The character class

  • Linux中用rename命令批量替换文件名方法实例

    前言 在Linux系统中修改文件名可以用mv命令,但是它只能对单个文件进行操作,如要要批量执行还要写shell脚本,用for语句迭代执行,不过Linux中另外一个命令支持批量替换文件名,它是rename,rename支持正则表达式匹配. 需要注意的是:rename命令在不同的Linux发行版语法格式不一样. 语法 在Debian或者Ubuntu环境下使用的语法是: rename 's/stringx/stringy/' files 而在CentOS下或者RedHat下是: rename stri

  • 详解linux下批量替换文件内容的三种方法(perl,sed,shell)

    在建设本网站的时候,发现新建了很多的网页,突然发现,每个文件都需要进行修改一样的内容,一个一个打开很是麻烦,所以,总结了一下如何快速修改一个目录下多个文件进行内容替换.第三种方法用的不多 方法一 使用perl ,命令如下: 复制代码 代码如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 方法二 使用sed命令如下: 复制代码 代码如下: sed -i "s/原字符串/新字符串/g" `grep 原字符串

  • Linux 按时间批量删除文件命令(删除N天前文件)

    需要根据时间删除这个目录下的文件,/home/lifeccp/dicom/studies,清理掉20天之前的无效数据. 可以使用下面一条命令去完成: find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \; 这个是根据时间删除. 下面简要解释一下,这句shell命令: find /home/lifeccp/dicom/studies -mtime +21 -name "*.*"

  • Linux bash删除文件中含“指定内容”的行功能示例

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的行 # 运行方式: ./dline.sh c.log ==> 产生输出文件: c.log0 array=( "rm -f lvr_3531_pf_new" "arm-hisiv100-linux-gcc " "In function " &qu

  • Linux 删除和替换文件中某一行的方法【推荐】

    如果有一个abc.txt文件,内容是: aaa bbb BATBUSINESSTYPE, INSIDEID--) ONLINE; INSIDEID--) ONLINE ccc ddd eee fff 如果要删除ddd,那么脚本可以这样写: sed -i '/ddd/d' abc.txt 如果删除的是一个变量的值,假如变量是var,应该写成: sed -i '/'"$var"'/d' abc.txt 至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt

  • 利用C语言替换文件中某一行的方法

    文件中存贮的内容如下所示: 11 1122 0 1122 * * 0 0 22 222 0 222 * * 0 0 33 333 0 333 * * 0 0 通过使用下面的几个函数,fopen,fprintf,fscanf,fseek,ftell . 具体的函数函数原型如下所示: FILE*fopen(const char*filename,const char *mode); int fprintf(FILE*stream,const char *format,...) int fscanf(

  • Python实现替换文件中指定内容的方法

    本文实例讲述了Python实现替换文件中指定内容的方法.分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的python程序,文件名是file_replace.py,具体代码如下: #!/usr/bin/env python #_*_ coding:utf-8 _*_ import sys,os if len(sys.argv)<4 or len(sys.argv)>5: sys.exit('There needs fo

  • 利用Shell脚本循环读取文件中每一行的方法详解

    前言 本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.使用for循环 for line in `cat filename` do echo $line done 或者 for line in $(cat filename) do echo $line done 二.使用while循环 while read -r line do echo $line done < filename While循环中rea

  • 使用Linux正则表达式灵活搜索文件中的文本

    正则表达式是一种符号表示法,用于识别文本模式.Linux处理正则表达式的主要程序是grep.grep搜索与正则表达式匹配的行,并将结果输送至标准输出. 1. grep匹配模式 grep按下述方式接受选项和参数(其中,regex表示正则表达式) 复制代码 代码如下: grep [options] regex [files] 其中options主要为下表: 选项 含义 功能描述 -i ignore case 忽略大小写 -v invert match 不匹配匹配的 -l file-with-matc

  • Python3搜索及替换文件中文本的方法

    本文实例讲述了Python3搜索及替换文件中文本的方法.分享给大家供大家参考.具体实现方法如下: # 将文件中的某个字符串改变成另一个 # 下面代码实现从一个特定文件或标准输入读取文件, # 然后替换字符串,然后写入一个指定的文件 import os, sys nargs = len(sys.argv) if not 3 <= nargs <= 5: print('usage: %s search_text repalce_text [infile [outfile]]' % \ os.pat

  • Python中搜索和替换文件中的文本的实现(四种)

    在本文中,我将给大家演示如何在 python 中使用四种方法替换文件中的文本. 方法一:不使用任何外部模块搜索和替换文本 让我们看看如何在文本文件中搜索和替换文本.首先,我们创建一个文本文件,我们要在其中搜索和替换文本.将此文件设为 Haiyong.txt,内容如下: 要替换文件中的文本,我们将使用 open() 函数以只读方式打开文件.然后我们将 t=read 并使用 read() 和 replace() 函数替换文本文件中的内容. 语法: open(file, mode='r') 参数: f

  • shell去掉文件中空行(空白行)的方法详解

    本文详细介绍了使用shell去除文件中的空行的方法,学习下sed.awk.shell文件检测的方法,有需要的朋友可以作个参考. 本节内容:shell去掉文件中空行 1,shell 去掉文件中的空行 复制代码 代码如下: cat filename | sed -e '/^$/d' > filename 2,保留最新的9个文件,其它的文件删除的命令语句 复制代码 代码如下: ls -t | awk '{if(NR>9){print $0}}' |xargs rm -f 附,shell中的特殊变量

  • Python从文件中读取数据的方法步骤

    一.读取整个文件内容 在读取文件之前,我们先创建一个文本文件resource.txt作为源文件. resource.txt my name is joker, I am 18 years old, How about you? 如何读取文件全部内容,我们编写到reader.py文件中. reader.py with open('resource.txt') as file_obj: content = file_obj.read() print(content) 需要注意的是需要将resourc

随机推荐