sed命令使用

#将文件中的英文双引号替换成英文单引号

sed 's/"'"/'"'/g' test.txt

s/+双引号+单引号+双引号+/+单引号+双引号+单引号+/g

或者

sed s#\"#\'#g test.txt

#文件中存储数据的格式是key:value,现在交换变成value:key。

sed 's/\(.*\):\(.*\)/\2:\1/' input

#将文件中的所有大写字母转换成小写字母

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' input

#在文件中查找包含字符串pattern的行并打印,-n表示不打印输入文件的所有行,编辑命令p表示打印匹配行。

sed -n '/pattern/p'  a.txt

#只打印第一行

sed -n '1p' a.txt

#打印第3~6行

sed -n '3,6p' a.txt

#将当前文件加下所有文件中的-m486替换成-mtune=i486

sed -i"s/-m486/-mtune=i486/g" `grep "\-m486" -rl .`

#在文件结尾添加文本

sed '$a\

End of file' input

#删除以.H1开头的行的下一行的空行,sedscript内容如下:

/^\.H1/{
n
/^$/d
}
sed -f sedscript input

#打印文件的前100行

sed '100q' input

#将文件中的多个空行变成一个

sed '/^$/{
N
/^\n$/D
}' input

#在文件中查找字符串,字符串可能跨两行

#!/bin/sh
#phrase -- search for words across lines
# $1 = search string; remaining args = filnames
search=$1
shift
for file
do
sed '
/'"$search"'/b
$!N
h
s/.*\n//
/'"$search"'/b
g
s/ *\n/ /
/'"$search"'/{
g
b
}
g
D' $file
done

注意使用变量的方式,变量两边用双引号,被Shell解释,然后再用单引号。

/'"$search"'/b在当前行匹配模式,如果匹配成功,b命令跳转到命令结尾,即输出当前行并进入下一个循环;

如果匹配失败,则执行$!N,即除了最后一行以外,读取下一行,追加到模式缓冲区中。

h将模式缓冲区中的内容拷贝到保持缓冲区中,

s/.*\n//将模式缓冲区中的第一行删除,然后/'"$search"'/b在剩下的内容,即原来的第二行中进行匹配,如果匹配成功,则直接输出并进入下一个循环;

如果匹配失败,向下执行,g将保持缓冲区内如拷贝到模式缓冲区,然后s/ *\n/ /将将第一行结尾的空格和换行符删除后,/'"$search"'/继续匹配,

如果匹配成功,g将保持缓冲区内如拷贝到模式缓冲区,b到命令结尾则输出模式缓冲区的内容后,进入下一个循环。

如果匹配失败,则g将保持缓冲区内如拷贝到模式缓冲区,然后用D删除模式缓冲区中的第一行,如果模式缓冲区中不为空,则从头开始执行。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值