sed作删除用的匹配字符太长且有空格和符号,该怎么办?

sh/bash/dash/ksh/zsh等Shell脚本
回复
aocif32
帖子: 13
注册时间: 2016-03-12 12:36
送出感谢: 1 次
接收感谢: 0

sed作删除用的匹配字符太长且有空格和符号,该怎么办?

#1

帖子 aocif32 » 2016-12-23 21:45

比如有文件aaa.txt内容如下
#* 3 * * * /bin/sh /etc/hello
aa
#*/20 * * * * /bin/sh /etc/aacc.sh aap

想将第三行内容删除(有时可能不在第三行)
sed -i '/#*/20 * * * * /bin/sh /etc/aacc.sh aap/d' aaa.txt这个运行不了

sed -i '/aa/d' aaa.txt这个就行

要怎么匹配呢?或者有什么其它办法?
头像
b33e
帖子: 3863
注册时间: 2011-06-07 14:20
系统: Mint18
送出感谢: 16 次
接收感谢: 62 次

Re: sed作删除用的匹配字符太长且有空格和符号,该怎么办?

#2

帖子 b33e » 2016-12-23 22:34

用正则表达式匹配

代码: 全选

sed -i '/^#\*\/20.*$/d' filename
删除filename文件中以 #*/20 开头的行
头像
lilydjwg
论坛版主
帖子: 4188
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 129 次
联系:

Re: sed作删除用的匹配字符太长且有空格和符号,该怎么办?

#3

帖子 lilydjwg » 2016-12-23 22:48

脚本化管理 cron job,你需要 /etc/cron.d 目录。
头像
astolia
论坛版主
帖子: 4843
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 814 次

Re: sed作删除用的匹配字符太长且有空格和符号,该怎么办?

#4

帖子 astolia » 2016-12-24 0:34

你把特殊字符转个义不就完了

代码: 全选

sed -i '/#\*\/20 \* \* \* \* \/bin\/sh \/etc\/aacc\.sh aap/d' aaa.txt
aocif32
帖子: 13
注册时间: 2016-03-12 12:36
送出感谢: 1 次
接收感谢: 0

Re: sed作删除用的匹配字符太长且有空格和符号,该怎么办?

#5

帖子 aocif32 » 2016-12-24 14:26

谢谢2,4楼,学到新知识了

3楼,我是在路由里弄,没这目录。
回复

回到 “Shell脚本”