linux中sed是一个很强大的命令,可以实现字符串的编辑以及其他功能,以下是比较常用的几个,希望对你有帮助。
文件中内容的替换
sed -i 's/FAILED\ open\ or\ read/OK/g' check
sed -i '1s/FAILED\ open\ or\read/OK/g' check
#g是全局global的意思,指代所有,如果不加g,则只替换一次
#第二行命令中1是在文本第一行处进行替换
#-i的作用就是将替换应用于源文件,否则只打印输出,为了写入文件,也可以将代码写成sed 's/FAILED\ open\ or\ read/OK/g' check > file
#若字符串中存在空格等其他符号,需要进行转义,加\,如FAILED\ open\ or\ read
若要指定从第几个开始替换,命令为sed-i 's/FAILED\ open\ or\ read/OK/2g' check
#从第二个字符出开始替换
cat regular_express.txt | sed '2,5c No 2-5number'
#c代表行内容的替换,将第2-5行的内容用No 2-5 number来代替
添加文本或字符串
cat regular_express.txt | sed '2a test'
#在第二行后面添加一行,同时输入test,如果在前面一行写入内容,用 sed '2i test'
输出指定行的内容
nl passwd | sed -n '2,5p'
#打印输出2-5行
nl test_file |sed -n '1~2p'
#打印输出奇数行
#1表示从第一行开始,2p表示每隔两行输出文本,即输出奇数行
nl test_file |sed -n '2~2p'
#2表示从第一行开始,2p表示每隔两行输出文本,即输出偶数行
删除行操作
sed '/^$/d' file
# 删除空白行,d表示删除
sed -i '5c\name_' test_file
#-i将操作应用于源文件
#5c表示删除第五行,斜杠\后面表示要保留的文本。也就是说删除第五行除name_之外的所有内容
#test_file表示要执行删除操作的文件
nl regular_express.txt | sed '2,5d'
#输出regular_express.txt内容,显示行号,同时输出内容传递给sed命令,删除2-5行(d表示删除)
格式化输出
echo"this is an example" | sed 's/\w\+/[&]/g'
输出结果[this][is] [an] [example]
#&在此处用来指代前面搜索到的字符
同理,echo "this is an example" |sed 's/\w\+/#&#/g'
输出结果#this##is# #an# #example#
替换指定字符[子串匹配标记]
echothis is a digit 7 number | sed 's/digit \([0-9]\)/\1/'
#将digit7按7输出,输出结果为this is a 7 number
#\([0-9]\)用来匹配要输出的字段,其中字段用()括起来,并且需要转义
#\1代表找到的第一个字段,如果前面的()存在多个,用\1,\2…来引用
暂时就这么多了,希望对你有用处。
领取专属 10元无门槛券
私享最新 技术干货