-i:直接修改文档读取的内容,不在屏幕上输出
sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed默认不会直接修改文件中的值,加-i后会直接修改文件中的内容。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c184360578498e0fc32d9296be12b245.png)
整理本文时发现一些其他文章值得借鉴的: https://blog.csdn.net/bandaoyu/article/details/120047612
工作中你有没有遇到过要把一个文本文件,比如user.txt 导入到数据库user_table中,但这个文本中除了一行行数据外,第一行是表头字段,那这一行其实不属于数据,是要剔除掉的。这是你会怎么办?
有人肯定说用vi或者vim直接打开删除第一行,这个方法可行,但要是文本太大呢,vi,vim等工具就不太好用了。而且步骤繁琐。
其实Linux中有个很好用的命令 sed 可以帮我们实现这个功能,删除文本...
1.删除匹配行的上一行和下一行:sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file2.sed中使用变量,删除匹配行的上一行和下一行:AA=string #变量指定匹配字符串
sed -i -e '/'"$AA"'$/{n;d}' -e '$!N;/\n.*'"$AA"'$/!P;D' file...
sed命令常用到的两个选项:
-i : 直接在文件上编辑 (edit files in place)
-e[默认选项]:只在命令行输出,而文件不改变(add the script to the commands to be executed)
注:使用sed命令可以使用 -i 或者 -e 选项(以下例子仅以-i举例)
(1)sed命令删除特定行号
删除第N行:
sed -i 'Nd' filename
删除第N~M行:
sed -i 'N,Md' filename #file的[N,M]行都被删除
如果删除的是一个变量的值,假如变量是var,应该写成:
sed -i '/'$var'/d' abc.txt
至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt中去的。
[asp@BJ-CP-7F-106-36 result]$ cat 11371_mobile_20
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。
1.sed的使用方法,调用sed 命令的语法有两种:
一.在命令行指定sed指令对文本进行处理:sed +选项 ‘指令’ 文.