shell sed指令

本文详细介绍了Linux shell中sed指令的使用,包括行追加、行上添加和替换整行等操作,并展示了如何通过awk进行精确搜索和逐行处理。通过示例展示了如何查找使用bash的账户、收集网络流量和硬盘容量信息,以及使用awk的条件判断和数组功能来实现高级搜索。最后提到了明天的环境准备任务。

shell   05

================================================

  • sed指令

除了p、d、s之外还有:

a行下追加    i行上添加    c替换整行

sed 'a 666' user    //所有行的下面追加666

sed '1a 666' user   //第1行的下面追加666

sed '/^bin/a 666' user   //在以bin开头的行的下面追加666

sed 'i 666' user  //所有行的上面添加666

sed '5i 666' user   //第5行的上面添加666

sed '$i 666' user  //最后1行的上面添加666

sed 'c 666' user   //所有行都替换成666

sed '1c 666' user  //替换第1行为666

 

------------------------------------------------------------------------

编写脚本,找到系统使用bash的账户名,然后按照

用户名 --> 密码的格式存储在一个文件中

 

grep "bash$" /etc/passwd | sed 's/:.*//'    //找到以bash结尾的用户

再用sed去掉用户后面:开始的所有内容,留下的就是用户名

sed -n '/bash$/s/:.*//p' /etc/passwd  //用sed找到以bash结尾的用户

然后去掉用户后面:开始的所有内容,最后加p的作用是仅仅显示被

替换的行

 

#!/bin/bash

u=$(sed -n '/bash$/s/:.*//p' /etc/passwd)   //在文档中找到以bash结尾的行

并且将行中:以及:后面的所有内容替换为空,留下的就是用户的名字,然后将

这些名字放入变量u里面

for i in $u   //把上一步找到的用户放入循环

do

    pass=$(grep $i /etc/shadow)    //将每个人的密码信息找出

    pass1=${pass#*:}    //掐头

    pass2=${pass1%%:*}   //去

### 使用 Shellsed 命令执行文本替换Shell 脚本中,`sed` 是一种非常高效的工具,能够快速完成各种文本处理任务。对于文本替换操作而言,其基本语法如下: ```bash sed 's/<search_str>/<target_str>/g' input_file ``` 此命令会将输入文件 `input_file` 中所有的 `<search_str>` 替换为 `<target_str>` 并打印到标准输出[^1]。 如果希望直接修改原文件的内容,则可以加上 `-i` 参数: ```bash sed -i 's/<search_str>/<target_str>/g' input_file ``` 上述命令会在不创建新文件的前提下,直接更改原始文件中的内容[^2]。 当需要批量替换某个目录下的多个文件时,可结合 `grep` 和反引号 `` 来定位目标文件并应用替换规则。具体命令形式如下所示: ```bash sed -i 's/<search_str>/<target_str>/g' `grep "<search_str>" -rl <folder_path>` ``` 这条指令先通过 `grep` 查找包含特定字符串的文件列表,随后利用这些路径作为参数传递给 `sed` 进行全局替换操作。 需要注意的是,在实际编写脚本过程中可能遇到特殊字符冲突的情况,比如正则表达式的元字符或分隔符 `/` 自身存在于待匹配串里。此时应该采用合适的转义机制或者更换默认分隔符以避免解析错误。例如下面的例子展示了如何安全地把 `/a` 替换成 `-b`: ```bash sed -i 's|/a|-b|g' testa.txt ``` 这里改用了竖线符号 `|` 代替斜杠 `/` 作字段界定标志,从而简化了写法同时也增强了代码可读性[^3]。 ### 示例代码 假设有一个名为 `example.txt` 的文档,其中部分内容如下: ``` apple pie is /a good choice. banana bread tastes better than apple pie. ``` 运行以下命令后, ```bash sed -i 's|/a|an|g' example.txt ``` 最终得到的结果将是这样的两行文字: ``` apple pie is an good choice. banana bread tastes better than apple pie. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值