sed基本用法
用法1:前置命令 | sed [选项] '条件指令'
用法2:sed [选项] '条件指令' 文件.. .. | awk
sed -n '/root/p' /etc/passwd | awk -F[/] '{print $2}'
sed工具的基本选项
-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
-r(让sed支持扩展正则)----------------------------------------------------
+ : 1..n egrep 'f+' /etc/rc.local
? : 0..1 egrep 'init(ial)?' /etc/rc.local
{n,m} : n..m # egrep '(ab){3,5}' brace.txt # egrep '(ab){3,}' brace.txt
() : sed -r 's/^(.)(.*)(.)$/\3\2\1/' nssw.txt
|
\b
输出包括单词“init”的行,文件中“initialization”不合要求
egrep '\binit\b' /etc/rc.local
egrep '\<init\>' /etc/rc.local
-----------------------------------------------------------------------------------------
-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
1)sed命令的 -n 选项
sed '1p' /etc/hosts = sed 'p' /etc/hosts #全部显示
sed -n '1p' /etc/hosts #只显示打印行。
sed -n '3,6p' /etc/passwd 打印passwd第3到第6行账户的信息
sed 'd' /etc/passwd # 删除所有行
sed -n '1p;4p' /etc/passwd # 1 行 and 4 行
sed -n '1,4d' test.txt //删除操作
sed '3,5d' a.txt //删除第3~5行
sed '/xml/d' a.txt //删除所有包含xml的行
sed '/xml/!d' a.txt //删除不包含xml的行,!符号表示取反
sed '$d' a.txt //删除文件的最后一行
sed '/^$/d' a.txt //删除所有空行
sed -n '1p;4p' /etc/passwd
sed -n '3,+10p' /etc/passwd 打印第3以及后面的10行
sed -n '1~2p' /etc/passwd 打印1到2行?
sed -n '2~2p' /etc/passwd
打印奇数偶数行
sed -n '/root/p' /etc/passwd 含root的行
sed -n '/bash$/p' /etc/passwd
sed -n '/^bin/p' a.txt //输出以bin开头的行
//输出文件的行数 sed -n '$=' a.txt
替换操作的分隔“/”可改用其他字符,如#、&等,便于修改文件路径
sed命令的s替换基本功能(s/旧内容/新内容/选项):
sed 's/xml/XML/' a.txt //将每行中第一个xml替换为XML
sed 's/xml/XML/3' a.txt //将每行中的第3个xml替换为XML
sed 's/xml/XML/g' a.txt //将所有的xml都替换为XML
sed 's#/bin/bash#/sbin/sh#' a.txt //将/bin/bash替换为/sbin/sh
sed '4,7s/^/#/' a.txt //将第4~7行注释掉(行首加#号)
sed 's/^#an/an/' a.txt //解除以#an开头的行的注释(去除行首的#号)
sed 's/.//2 ; s/.$//' nssw.txt 删除文件中每行的第二个、最后一个字符
sed 's/[0-9]//' nssw.txt
sed -r 's/[0-9]//g;s/^( )+//' nssw2.txt
sed 's/([A-Z])/[\1]/g' nssw.txt
sed '2i XX' a.txt //在第二行前(面)一行,插入XX
sed '2a XX' a.txt //在第二行后(面)一行,追加XX
sed '2c XX' a.txt //将第二行替换为XX c整行替换
彩排
sed命令的 -i 选项 # 真刀真枪
sed -i '$a 192.168.4.5 svr5.tarena.com svr5' /etc/hosts
#sed [选项] '条件指令' 文件
选项:
-n 屏蔽默认输出
-r 支持扩展正则
-i 修改源文件
条件:
行号 4 4,5 4~2 4,+10
/正则/
指令:
p 打印
d 删除
s 替换s/旧/新/g
a 追加
i 插入
c 替换行
rm -rf * ; cd .. ctrl + o
chattr -i 文件名
chattr -a 文件名
for i in node{1..6}
do
virsh start $i
done
fc 临时脚本,一次性脚本
-l:显示历史命令;
-n:显示历史命令时,不显示编号; fc -ln or fc -rn
-r:反序显示历史命令。
fc -l -10 #显示10条历史命令
fc 1040
fc !66 #执行第66条命令
fc -l -1 #执行最后一个命令 类似于 !!、 上键
fc -l -2 #执行倒数第二个命令