shell-sed

sed     stream   edit  非交互式 对文件做编辑的工具

语法格式
sed   [选项]  ‘动作‘   文件列表
sed   [选项]  ‘条件动作‘   文件列表

以行为处理单位  一次处理一行  逐行处理
默认把处理结果输出到屏幕

+++++++++++++++++++++++++++++++++++++++++++++++

选项:

-n    #屏蔽默认输出

-i  直接修改文件内容

-f 使用sed脚本

+++++++++++++++++++++++++

vim  test.sed

s/haha/xixi
s/[0-9]//g
........

:wq

sed  -f   test.txt    a.txt

+++++++++++++++++++++++++
-e 可指定多个处理动作

-r  启用扩展的正则表达式,若与其他选项一起用应作为首个选项

{}  可组合多个命令,以分号分隔

处理动作:

p打印行

2,4p  输出第234行

2p;4p 输出第2和第4行

d删除行 (删除一行)

2,4d 删除第234行

s 字符串替换

s/old/new  将每行的第一个old替换为new

s/old/new/3  将每行的第3个old替换为new

s/old/new/g  将所有的old替换为new

++++++++++++++++++++++++++++++++++++++++++++

p打印行
 sed ‘p‘ a.txt               输出所有行不屏蔽默认输出(出现两遍内容)
 sed -n  ‘p‘ a.txt            输出所有行 sed -n  ‘3p‘ a.txt
 cat -b a.txt 
 sed  -n ‘3p‘ a.txt            输出第三行
 sed  -n ‘3,5p‘ a.txt           输出345行
 sed  -n ‘$p‘ a.txt               输出最后一行
 sed  -n ‘1p;5p;$p‘ a.txt      输出1,5,和最后一行
 sed  -n ‘/^r/p‘ a.txt      输出以r开头的行
 sed  -n ‘/h$/p‘ a.txt     输出以h结尾的行
 sed  -n ‘/h/p‘ a.txt         输出带h的行

sed -n ‘p;p;p‘ a.txt        把每行内容输出3次

sed -n ‘3,+10p‘  a.txt  输出第3行及其后10行的内容

sed -n  ‘p;n‘ a.txt       输出奇数行,n表示读入下一行文本(隔行)

sed -n ‘n;p‘ a.txt       输出偶数行,n表示读入下一行文本(隔行)

sed  -n  ‘$=‘   a.txt            输出文件的行数

sed -n  ‘10,${n;p}‘ a.txt   输出第10行到最后一行所有的偶数行

---------------------------------------------------------------------
d删除行 (删除一行)  不带-i不修改原文件

sed  ‘1d‘  a.txt    删除第一行
 sed  ‘$d‘  a.txt    删除最后一行
sed  ‘1,3d‘  a.txt   删除第123行
sed  ‘/r/d‘   a.txt  删除包含r的行

sed ‘/r/!d‘ a.txt    删除不包含r的行

sed ‘/^r/d‘ a.txt    删除以r开头的行

sed   ‘/^$/d‘  a.txt   删除所有空行

sed  ‘/^$/{n;/^$/d}‘   删除重复空行,连续两个空行只保留一个

sed  ‘/^[rds]/d‘ a.txt   删除分别以r,d,s开头的行
 sed  -i   ‘$d‘ /etc/passwd  删除文件的最后一行,修改原文件
----------------------------------------------------------------------
a/i添加行  (添加一行)
a  在当前行下方添加新行
i   在当前行上方添加新行

sed   ‘a内容‘  a.txt

echo cccccccccccc > a.txt
   sed  ‘aFFFFFFFFF‘ a.txt    在没行的下方添加内容FFFF...
   sed  ‘iFFFFFFFFF‘ a.txt   在没行的上方添加内容FFFF...
   echo 11111111 >> a.txt
   sed  ‘$aFFFFFFFFF‘ a.txt   在最后一行的下方添加
 sed  ‘1aFFFFFFFFF‘ a.txt   在第一行添加
  echo  ccccccccccc >> a.txt
 sed  ‘/^c/aFFFFFFFFF‘ a.txt     在以c开头的行添加
  sed  -i ‘/^c/aFFFFFFFFF‘ a.txt  在以c开头的行添加,修改原文件

sed  -i ‘$ayzs:x:2001:2001:tea:/home/yzs:/bin/bash‘ /etc/passwd  在最后一行的上边添加内容

sed ‘1,3aF‘ a.txt    在第123行的上边添加
sed  -e ‘aF‘ -e ‘aX‘ -e ‘aW‘ a.txt  在每行的上边分别都添加FXW,都隔行
--------------------------------------------------------------------
c替换行   (以行为替换单位)
sed   ‘c内容‘   a.txt
sed   ‘条件c内容‘   a.txt
  sed  ‘cPLJ‘ a.txt      把每行替换成PLJ
  sed  ‘1cPLJ‘ a.txt    把第一行替换成PLJ
 sed  ‘2,5cPLJ‘ a.txt  把第2345行替换成PLJ
 sed  -e ‘2cPLJ‘ -e ‘3cPLJ‘ a.txt   指定多个处理动作替换
 sed  -i  ‘/^a/cT‘ a.txt   把以a开头的行替换成T  -i处理原文件
--------------------------------------------------------------------
sed   ‘s/aa/bb/‘  a.txt  将每行的第一个aa 替换成bb

sed ‘s/aa/bb/3‘ a.txt 将每行的第3个aa 替换成bb

sed ‘s/aa/bb/g‘ a.txt 将所有的aa 替换成bb

sed ‘s/aa//g‘ a.txt 将所有的aa删除

sed ‘s/aa/&s/g‘ a.txt    将所有的aa 替换成aabb,&代表前边的查找串

sed  ‘4,7s/^/#/g‘  a.txt 将第4-7行注释掉

sed   ‘s/^an#/an/‘  a.txt  去除以an开头行的注视

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

导入导出操作

r  读取文件  :

3r b.txt 在第3行文件下方插入文件b.txt

4,7r b.txt   在第4-7行每一行的下方插入文件b.txt

w 保存到文件:

3w c.txt   将第3行另存到文件c.txt

4,7w c.txt  将第4-7行另存到文件c.txt

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

sed  复制剪切

基本动作

复制:   H:模式空间--追加--保持空间

h:模式空间--覆盖--保持空间

粘贴:  G:保持空间--追加--模式空间

g:保持空间--覆盖--模式空间

时间: 2024-08-07 20:36:36

shell-sed的相关文章

Python自动化开发—EX.3(实简单的shell sed功能)

#程序1: 实现简单的shell sed替换功能 import sys,os old_file = open('test.txt','r',encoding='utf-8') new_file = open('test_bak.txt','w',encoding='utf-8') old_line = input('替换前内容>>:') new_line = input('替换后内容>>:') for line in old_file: #print(line.strip()) i

Python3.5 day3作业一:实现简单的shell sed替换功能

需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. import sys,os old_file = sys.argv[1] new_file = sys.argv[2] file_path = sys.argv[3] f = open(file_path,"r") f1 = open("back","a+&qu

SHELL SED AWK 语法

原文地址:http://blog.chinaunix.net/uid-15811445-id-176318.html Shell shell 测试表达式 -a file 检查文件是否存在(与-e同) -b file 检查文件是否为特殊块设备 -c file 检查文件是否为特殊字符设备 -d fil 检查文件是否为目录 -e file 检查文件是否存在(与-a同) -g file 检查文件属性位set- group-id是否置1 -h file 检查文件是否为符号链接(与-L 同) -k file

linux 给文件替换字符串/替换内容/替换某行 (shell,sed)

本文是要讲linux 不打开文档/文件的情况下,替换文本内容.打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 . 话题相关#linux 文件替换字符串#sed 字符串替换#shell 文件替换某行#linux 替换指定行内容#linux 替换某行 linux一般用sed来替换文本到指定行. 基本语法 s (substitute)为查找替换命令 # 在输出或打印中,替换字符串.并不改变原文件内容sed '作用范围s/替换查找目标/替换成为/替换目标option'

shell sed 的一些用法

#1.替换 #将1.txt文件中的2017替换成2016显示在屏幕上 sed "s/2017/2016/g" 1.txt #将1.txt文件中的2017替换成2016显示在屏幕上对文件彻底修改,加 i 修改进文件 sed -i "s/2017/2016/g" 1.txt #Sed读取系统变量,变量替换 DATE="2016" sed  "s/2017/$DATE/g" 1.txt #关闭SELinux,修改SELinux策略e

shell -- sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

shell sed语法详解

sed  替换文件中的字符串 sed -e 's/foo/bar/' myfile   将 myfile 文件中每行第一次出现的foo用字符串bar替换,然后将该文件内容输出到标准输出 sed -e 's/foo/bar/g' myfile  g 使得 sed 对文件中所有符合的字符串都被替换 sed -i 's/foo/bar/g' myfile  选项i的用途是直接在文件中进行替换 为防止误操作带来灾难性的后果,sed在替换前可以自动对文件进行备份,前提是需要提供一个后缀名.mac osx下

shell - sed 简单使用记录

时间长不用,总是会忘掉的........还是烂笔头好些. sed 命令使用帮助及实操举例 功能:主要用来对一个或多个文件进行编辑,简化对文件的反复操作. 语法: sed [-hnV] [-e<script>][-f<script文件>][文本文件] 参数: -e <script> 根据script指定的脚本来处理输入的文本文件,这个只实现了屏幕打印修改后的效果.并没有实际修改文件 -f<script文件>:这里是指定执行 script脚本文件 -h:帮助 -

Linux shell sed 命令详解

sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在行,并且执行指定关键字的替换 在某行之后追加 查找关键字,并且在第二行追加 删除包含关键字的行 查看指定的行 在最后一行追加 1. 查找关键词做全局替换 sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config 2. 查找/etc/crontab 第17行,并且把0,30替换为15,45 sed -i '17s

实现简单的shell sed替换功能

通过脚本传参数可以实现替换 # -*-coding:utf-8-*- # Author:sunhao import sys f = open('yesterday','r',encoding='utf-8') f_new = open('yesterday.bak','w',encoding='utf-8') find_str=sys.argv[1] replace_str=sys.argv[2] for line in f: if "肆意的快乐" in line: line=line