混子随笔3

sed

sed是一种流编辑器,它是文本处理中非常中的工具,可以完美的配合正则表达式使用。处理文本文件时,首先会被读到模式空间中,而不修改原文件。sed可以对文本文件的所有行进行操作,也可以通过正则表达式进行匹配,使得sed可以只处理模式空间中的被正则表达式匹配到的行。
然后再判断模式空间中的文本是否会被正则表达式匹配到,如果匹配到,就会对匹配到的文本做编辑操作,之后再将被编辑的文本和没有被编辑的文本一同输出到标准输出, 如果模式空间没有被正则表达式匹配到,直接将没有被匹配到的文本原样输出至标准输出
1.用法格式:sed [选项] 脚本 文件
常用的选项
-n:不输出模式模式中的内容至屏幕,也就是不会将没有匹配到的文本输出到标准输出,只是输出编辑到的文本

-e 脚本:可以指定多个脚本,实现多次编辑

-f 脚本文件: 每一行一个编辑命令

-i:直接修改原文件

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

编辑命令 (与vim的末行模式类似)d命令是特例,需要特别注意,不能加-n选项
(1) d: 删除,对应d命令来说,不要安装sed的工作机制去理解,原因是对应d命令而言,没有匹配到的文本是不会输出到标准输出的。例如:下面的sed对yhy文件进行处理,不会将没有匹配到文本的输出至标准输出,而是将编辑后的文本输出到标准输出
例如:

[root@7 ~]# cat yhy
111
222
333
444
[root@7 ~]# sed '1,3d' yhy
444 
[root@7 ~]# sed '/^#/d' /etc/fstab  # 删除/etc/fstab文件中以#开头的行

UUID=396430ca-28ec-4c44-8e8e-171c92800306 /                       xfs     defaults        0 0
UUID=8e454dca-4ea4-416b-8234-0b0a4570ad6e /boot                   xfs     defaults        0 0
UUID=64654a8f-23bc-45e6-8c9c-fbdc07538547 swap                    swap    defaults        0 0

(2)p:打印
打印的时候要加上-n选项,不加的话打印出的会显示两遍
(3)a\字符串:在行后面追加字符串,支持使用\n实现多行追加
例如:sed ‘5a\new_line’ /etc/fstab:表示在第五行后面,也就是第六行插入new_line字符串,其后的行一次向下移动

(4)i\字符串:在行前面插入字符串,支持使用\n实现多行插入
例如:sed ‘5i\new_line’ /etc/fstab :表示在第5行插入new_line字符串,其后的行一次向下移动

(5)c\字符串:把匹配到的行替换为字符串
例如:sed ‘3c\yhy’ /etc/fstab 将第三行替换为yhy字符串

(6)w 文件路径:将匹配到的行重定向至指定的文件中
例如:sed ‘/^[^#]/w yhy.txt’ /etc/fstab 将非井号开头的行保存至yes.txt文件中

(7)r 文件路径:读取指定文件的内容插入到当前文件被匹配到的行处
例如: sed ‘3r /etc/issue’ /etc/fstab 将/etc/issue中的内容插入到第3行的文本后面

(8)=:表示被模式匹配到的行上面加上一个行号
sed ‘/^UUID/=’ /etc/fstab

(9)!:取反条件
例如:sed ‘/^#/!d’ /etc/fstab 将不是以#好开头的行删除

(10)s///:查找替换,常用的有s@@@, s### ,
修饰符有:
g:全局替换,表示可以替换一行中多次匹配到的字符串。如果不加g,那么只能替换一行中第一次出现的字符串
w 文件路径:替换成功的结果保存至指定文件中
p :显示替换成功的行
练习:输出一个绝对路径给sed命令,取出其文件名
echo “/var/log/messages” | sed -r ‘s#^./(.)#\1#’ 正确
echo “/var/log/messages” | sed -r ‘s/^./(.)/\1/’ 错误
echo “/var/log/messages” | sed ‘s/^.\/(.)/\1/’ 正确, 不用扩展正则表达式

bash

bash脚本语言是一种解释型语言。程序不需要编译,运行的时候才翻译为语言。其需要在shell平台上运行。shell是用户和Linux内核之间的接口程序。

**bash**脚本文件格式
#!/bin/bash                      定义bash脚本解释器
....

登入shell一般运行4个脚本
这4个脚本分为全局设置文件和用户设置文件
全局设置文件
     /etc/profile
         /etc/bashrc
用户设置文件
~/.bash_profile
~/.bashrc
用户登入时,bash会先读取全局设置文件,后读取用户设置文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值