标签:sed 行编辑器
sed:行编辑器,默认不处理源文件。
-i 直接修改源文件
-eSCRIPT–e SCRIPT 可以同时执行多个脚本
-f/PATH/TO/SED_SCRIPT
sed –f /path/to/scripts file
-r:表示使用扩展正则表达式
history |sed ‘s/[[:space:]]//‘ 使用sed命令history的行空格删掉
1.sed ‘源地址+编辑命令’ 文件
地址:1,100
$最后一行
$-1 倒数第二行
2模式:/正则表达式
/^root/
3/模式1/,/模式2/
4.指定行
5.Starline+N 从starline开始向后的N行
d:删除符合条件的行
sed ‘1,2d‘ /etc/fstab 删除第一行到第二行
sed ‘/oot/d‘ /etc/fstab 删除包含root的行
sed ‘1,+10d‘ /etc/fstab 删除第一行和后面10行
P:显示符合条件的行。
sed ‘/\//p‘/ etc/fstab 显示带斜线的行。相同的会显示2次
-n:只显示符合条件的行
sed -n ‘/root/p‘ /etc/passwd
a \”string”:在指定的行后面追加新行,内容为“string”
sed ‘/root/a \# hello world‘ /etc/passwd 在包含root的行后面添加 #helloworld
sed ‘/root/a \# hello world \n #hello‘ /etc/passwd 在后面添加2行
i \string:在指定的行前面添加新行。内容为string
sed ‘/root/i\#hello \n #hello‘ /etc/passwd 在前面添加2行
r FILE 将指定的文件内容添加至符合条件的行处
sed ‘10r/etc/passwd‘ /etc/fstab 在/etc/fstab的第10行添加passwd的内容
sed ‘$ r /etc/passwd‘ /etc/fstab 在最后一行$后插入passwd
sed ‘1,2r /etc/issue‘ /etc/fstab 在第一行和第二行后面插入issue的内容
w将指定范围内的内容另存至指定的文件中
sed ‘/oot/w /tmp/oot.txt‘ /etc/fstab 讲fstab中包含oot的行另存至/tmp/oot.txt
s 查找并替换:s/要查找什么(支持正则表达式)/替换为指定的内容(不支持正则表达式)/
sed ‘s/oot/OOT/‘ /etc/fstab 查找fstab里的oot 替换成OOT
支持正则表达式:
sed ‘s/^\//#/‘ /etc/fstab 查找fstab中,以/开头的行。并把/替换成#
默认只替换每一行中第一次匹配到的字符
加修饰符 g:全局替换
sed ‘s/\//#/g‘ /etc/fstab
i:查找时忽略大小写
sed ‘s/OOT/ooo/i‘ /etc/fstab
S/ / / : S# # # : S@ @ @
支持引用\(\) , \1 \2
sed ‘s#l..e#&r#g’ sed.txt 将sed中l..e的单词引用替换成1..er
&:表示引用模式匹配到的的整个串
或者sed ‘s#\(l..e\)#\1r#g’sed.txt
1.删除/etc/grub.conf这个文件行首的空白字符
[root@localhost~]#sed ‘s/^[[:space:]]//‘ /etc/grub.conf
2.替换/etc/inittab文件中的”id:3:initdefault:”一行中的数字5
[root@localhost~]#sed ‘s@\(id:\)[0-9]\(:initdefault:\)@\15\2@g‘ /etc/inittab
3.删除/etc/inittab文件中的空白行
[root@localhost~]#sed ‘s/ ^$ /d‘ /etc/inittab
4.删除/etc/inittab文件中开头的#号,要求#后面必须有空白字符
[root@localhost~]#sed -r ‘s/^#[[:space:]]//‘ /etc/inittab
5.取出一个文件路径的目录名称
[root@localhost~]#echo "/etc/rc.d" |sed -r ‘s@^(/.*/)[^/]+/?@\1@g‘
6.写一个脚本传递三个,第一个为整数,第二个为运算符,第三个为整数,进行运算,精确2位小数
/bin/bash
#
echo “scale=2;$1$2$3”|bc
7.写一个脚本。传递三个参数来比较大小
/bin/bash
#
if [ $1 -gt $2];then
if [ $3 -gt$1 ];then
echo "$3"
else
echo "$1"
fi
else
if [ $3 -gt $2 ];then
echo "$3"
else
echo "$2"
fi
fi
标签:sed 行编辑器
原文地址:http://coolcl.blog.51cto.com/4514424/1784703