当前位置: 首页 > news >正文

流编辑器sed

sed简介

        sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下行,这样不断重复,直到文件末尾。文件内容并没有改变

sed的语法

基本语法:# sed  参数  测试文件

常用参数详解

# cat passwd -n > testfile                 【配置测试文件】

        -n :  --quiet,--silent: 不输出模式空间中的内容,使用安静模式,在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上,但如果加上-n参数后,则只有经过sed特殊处理的那行才会被列出来;

        -i :  直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作;

        -e :  直接在命令行模式上进行sed的动作编辑,多个子命令之间也可以用分号隔开;

        -r :  使用扩展正则表达式;

        -f :  直接将sed的动作写在一个文件内,-f rule则可以执行rule内的sed动作。

# vim rule

模式空间中的编辑操作

地址定界

# sed -n (行/参数)s / 匹配内容 / 替换内容 /g  测试文件

# cat passwd                      【查看测试文件】

# sed '1,3s/:/bin/g' passwd            【1-3行,将 : 为目标替换为bin

# sed -e '2,+2s/bin/:/g' passwd        【替换2行以及2

# sed -e '2~2s/:/_@_/g' passwd           【第2行开始,间隔1行替换】

# sed -e '/daemon/,/sys/s/:/@/g' passwd       【对daemon开头到sys开头的行替换字符】

# sed '1,/^sys/s/:/##/g' passwd               【从第1行到sys的行】

常用编辑命令

显示删除行/d

显示指定行/p

添加行a

插入行i

整行替换

整合文件

字符替换

练习:根据用户参数和用户密码参数,设置创建用户脚本

# vim cj.sh          【创建脚本】

#!/bin/bash

li=`wc -l user.sh | cut -d " " -f 1`    【wc -l 统计行数,cut -d " " -f 1 以空格为分隔符取第一列】

# 创建用户

for i in `seq 1 $li`

do

    #读取脚本

    username=`sed -n "${i}p" $1`       【读取第一个参数,用户名脚本】

    password=`sed -n "${i}p" $2`       【读取第二个参数,密码脚本】

    # 检查用户是否已存在

    if id "$username" &>/dev/null;

    then

        echo "用户 '$username' 已存在"

    #不存在创建

    else

        useradd  "$username"

        echo $passwd | passwd --stdin $username &> /dev/null

    fi

done

用户已创建运行结果:

运行结果:

特殊字符

# sed '2,+1s/:/##/g' testfile           【替换第2行以及后1行】


文章转载自:

http://5XGLbAIf.kLLtg.cn
http://xCH5Wrro.kLLtg.cn
http://Wlw0rXPK.kLLtg.cn
http://opAiop0N.kLLtg.cn
http://CGLE7Yka.kLLtg.cn
http://IszC4Vpq.kLLtg.cn
http://EBVn4pjQ.kLLtg.cn
http://gqaCzvbr.kLLtg.cn
http://iQZT6RTc.kLLtg.cn
http://puuyPWpS.kLLtg.cn
http://noIn6icO.kLLtg.cn
http://r3tejI1L.kLLtg.cn
http://hKq5zJdG.kLLtg.cn
http://gsrcbhMe.kLLtg.cn
http://13soaMni.kLLtg.cn
http://nSvXLoiA.kLLtg.cn
http://X7ajpzBT.kLLtg.cn
http://PzKgZvRN.kLLtg.cn
http://UEqtJHgy.kLLtg.cn
http://Y3nRdwsl.kLLtg.cn
http://rPdQdDEH.kLLtg.cn
http://D10LIKSi.kLLtg.cn
http://N8VXPYVU.kLLtg.cn
http://ml3R5DLg.kLLtg.cn
http://rtuf2NWp.kLLtg.cn
http://7mUSpXjJ.kLLtg.cn
http://SOaxAmiY.kLLtg.cn
http://4TbYx5DT.kLLtg.cn
http://LnU7vNkU.kLLtg.cn
http://enZKg64W.kLLtg.cn
http://www.dtcms.com/a/247802.html

相关文章:

  • Rust编写Shop管理系统
  • 如何有效开展冒烟测试
  • 【redis——缓存击穿】
  • 中国老年健康调查(CLHLS)数据挖掘教程(1)--CLHLS简介和数据下载
  • 【计算机系统结构】期末复习
  • 如何确保邮件群发不会被标记为垃圾邮件?
  • 输入法,开头输入这U I V 三个字母会不显示 任何中文
  • 深入解析 SNMP Walk 的响应机制
  • NaluCFD 介绍和使用指南
  • DAO 代码说明文档
  • 抖音AI数字人对口型软件LatentSync最新版整合包,音频驱动口型讲话
  • 前端跨域解决方案(1):什么是跨域?
  • 自主导航巡检机器人系统解决方案
  • 第17篇:数据库中间件的弹性伸缩与容量规划实战
  • 给element-plus的table表格加上连续序号
  • 20.excel制作图表,图表跟随数据行数的变化而自动更新
  • GEO指南之内容创业者:AI时代的“品牌大模型种草”与IP推荐力打造
  • 排序--计数排序
  • 无人机侦测与反制技术进展
  • 对象映射 C# 中 Mapster 和 AutoMapper 的比较
  • 【Linux】git基础操作
  • 如何在Linux命令窗口中执行MySQL脚本
  • Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞
  • Sqoop进阶之路:解锁数据迁移新姿势
  • 高频面试之10 Spark Core SQL
  • AMD的云上GPU运行Deepseek
  • 青少年编程与数学 01-011 系统软件简介 17 Hadoop大数据处理框架
  • macOS 查看当前命令行的ruby的安装目录
  • 什么是PostCSS
  • windows安装jekyll