sed命令文档
命令目录
Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
参数说明:
- -h或--help 显示帮助。
- -r -E 使用正则表达式
- -n或--quiet或--silent 仅显示script处理后的结果。
- -e <script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
- -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -V或--version 显示版本信息。
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
- g : 全局替换, 有g的情况下,如果一行内,有多个文本匹配,所有文本都会替换,否则只替换每一行的第一个匹配项
使用案例
# 替换文件内容 并且备份原文件 -i 原地替换文本内容 [SUFFIX] 替换时,使用此后缀,使用些后缀备份原文件
# -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
## 普通文本替换 -i 原地替换 .back 备份文件后缀 s 表示替换 g 全局替换
sed -i.back s/pwpolicy/PWPOLICY/g anaconda-ks.cfg
## 查找并输出匹配的文本到控制台 -n 仅显示script处理后的结果 p 打印输出
sed -n /PWPOLICY/p anaconda-ks.cfg
## 只保留匹配的行
sed -n -i.back /PWPOLICY/p anaconda-ks.cfg
## 使用正则表达式 -E 或者 -r 使用正则 ^#.+ 匹配注释的行 替换为 #@@@
sed -E s/^#.+/#@@@/ anaconda-ks.cfg
## 插入 在每个注释的行后面(前一行,后一行)添加一个说明
sed -r 's/(^#.+)/\1 ---这一行是被注释的/' anaconda-ks.cfg
sed -E '/^#.+/a##上面一行是被注释的' anaconda-ks.cfg
sed -E '/^#.+/i##下面一行是被注释的' anaconda-ks.cfg
## 在指定位置插入一行
sed '1i##这是在第一行前面插入的一行文本' anaconda-ks.cfg
## 在每一行的开头或末尾添加文本
sed 's/^/##每一行开头添加的文本 /' anaconda-ks.cfg
sed 's/$/ ##每一行末尾添加的文本/' anaconda-ks.cfg
sed 'i##在每一行前面都插入一行文本' anaconda-ks.cfg
# 使用正则
sed -r '/^/i##在每一行前面都插入一行文本' anaconda-ks.cfg
# 在每一行的前后同时添加一行文本 并且在当前行最后添加注释
sed -r 's/^(.+)/##在每一行前面都插入一行文本 \n\1 ## 在当前行后添加的注释 \n在每一行后面都插入一行文本/' anaconda-ks.cfg
案例文本
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$em3bHuprstKmXq0v$Oluvx6JudKtHETwBZ2t8fhf1O.RJ2tL5tiad8aaA9GpRd5PlR1edHxih6a0TPjsB2RMpLvAyqAerudZ0kOvQV1
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end