mirror of https://github.com/fengyuhetao/shell.git
105 lines
2.0 KiB
Bash
105 lines
2.0 KiB
Bash
|
#!/bin/bash
|
|||
|
#sed编辑器基础
|
|||
|
|
|||
|
#替换标记
|
|||
|
sed 's/lazy/ht/' ./test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#可用的替换标记
|
|||
|
#1.数字 表明新闻本将替换第几处模式匹配的地方
|
|||
|
sed 's/lazy/ht/2' ./test
|
|||
|
#2.g 表明新文件将会替换所有已有文本出现的地方
|
|||
|
sed 's/lazy/ht/g' ./test
|
|||
|
#3.p 表明原来行的内容要打印出来,替换后的
|
|||
|
sed 's/lazy/ht/p' ./test
|
|||
|
#4.w file 将替换的结果写到文件中
|
|||
|
sed 's/lazy/ht/w test1' ./test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#替换字符
|
|||
|
sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd
|
|||
|
#或者
|
|||
|
sed 's!/bin/bash!/bin/csh!' /etc/passwd
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#使用地址
|
|||
|
#1.数字方式的行寻址
|
|||
|
sed '2s/lazy/cat/' ./test
|
|||
|
sed '2,3s/lazy/cat/' ./test
|
|||
|
sed '2,$s/lazy/cat/' ./test
|
|||
|
#2.使用文本模式过滤器
|
|||
|
sed '/tiandi/s/bash/csh/' /etc/passwd
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#组合命令
|
|||
|
sed '2{
|
|||
|
s/fox/elephant/
|
|||
|
s/dog/cat/
|
|||
|
}' test
|
|||
|
sed '2,${
|
|||
|
s/fox/elephant/
|
|||
|
s/dog/cat/
|
|||
|
}' test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#删除行
|
|||
|
sed '3d' ./test
|
|||
|
sed '2,$d' ./test
|
|||
|
sed '/number 1/d' ./test
|
|||
|
#删除两个文本模式来删除某个范围的行,第一个开启删除功能,第二个关闭删除功能
|
|||
|
sed '/1/,/3/d' ./test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#插入和附加文本
|
|||
|
sed '3i\
|
|||
|
This is an appended line.' ./test
|
|||
|
|
|||
|
sed '$a\
|
|||
|
This is a new line of text.' ./test
|
|||
|
|
|||
|
#修改行
|
|||
|
sed '3c\
|
|||
|
This a changed line of text.' ./test
|
|||
|
sed '/number 1/c\
|
|||
|
This a changed line of text.' ./test
|
|||
|
#替换两行文本
|
|||
|
#sed '2,3c\
|
|||
|
#This a changed line of text.' ./test
|
|||
|
|
|||
|
#转换命令,处理单个字符
|
|||
|
#sed 'y/123/789/' ./test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
#回顾打印
|
|||
|
# p 打印文本行
|
|||
|
# -n 禁止其他行,只打印包含匹配文本模式的行
|
|||
|
sed -n '/number 3/p' ./test
|
|||
|
|
|||
|
#查看修改之前的行和修改之后的行
|
|||
|
#sed -n '/3/{
|
|||
|
#p
|
|||
|
#s/line/test/p
|
|||
|
#}' ./test
|
|||
|
|
|||
|
echo -e "next\n"
|
|||
|
|
|||
|
# 打印行号
|
|||
|
sed '=' ./test
|
|||
|
|
|||
|
#打印指定的行和行号
|
|||
|
#sed -n '/lazy/{
|
|||
|
#=
|
|||
|
#p
|
|||
|
#}' ./test
|
|||
|
|
|||
|
#列出行 打印数据流中的文本和不可打印的ASCII字符,任何不可打印的字符都用它们的八进制值前加一个反斜线或标准C风格的命名法,比如用\t来代表制表符
|
|||
|
sed -n 'l' ./test
|
|||
|
|