使用 sed 编辑 crontab

2023-11-25

我正在编写一个 sed 命令,该命令应取消注释 crontab 中的条目。有一个更好的方法吗?我想到的第一个选项是 sed。

Example:

crontab -l

# 5 * * * 3 bash test.sh

sed 命令应取消注释该条目。这就是我现在所拥有的。

sed "s#\# 5 * * * 3 bash test.sh#5 * * * 3 bash test.sh#"

显然这个 sed 命令不执行该任务。

ps:sed 命令最终将进入脚本。


Sed 非常适合匹配特定的正则表达式并以某些方式操作文本,但在我看来这并不是其中之一。虽然您可以使用 sed 来完成此任务,但结果可能过于复杂和脆弱。

您最初的尝试是:

sed "s#\# 5 * * * 3 bash test.sh#5 * * * 3 bash test.sh#"

这会失败,因为*字符是正则表达式中的特殊字符,被翻译为“零个或多个前一个原子”(在本例中为空格)。严格来说,您可以通过转义正则表达式中的星号(替换模式中不需要)来使此 sed 脚本正常工作。

但这仅对这种特定模式有帮助。如果您的一位同事决定在下班后 6 分钟而不是 5 分钟运行此脚本,以避免与另一个脚本发生冲突,该怎么办?或者评论字符后面有一个空格?突然你的 sed 替换失败了。

取消注释every评论有问题的脚本的出现,您可以使用:

crontab -l | sed '/# *\([^ ][^ ]*  *\)\{5\}[^ ]*test\.sh/s/^# *//' | crontab -

如果您使用的是更现代的 sed,您可以用稍短的 ERE 替换此 BRE:

crontab -l | sed -E '/# *([^ ]+  *){5}[^ ]*test\.sh/s/^# *//' | crontab -

这需要输出crontab -l,这显然是您完整的 crontab,使用 sed 操作它,然后根据其输出编写一个新的 crontabcrontab -。 sed 脚本匹配搜索与有效 crontab 匹配的行(以避免仅提及您的脚本的实际注释),然后进行简单的替换以仅删除开头的注释字符。匹配的模式如下所示:

  • # *- 匹配注释字符后跟零个或多个空格
  • ([^ ]+ +){5}- 五个非空格字符串,后跟空格
  • [^ ]*- 任意数量的非空格字符,这会导致:
  • test\.sh- 你的脚本。

但请注意,这不匹配all有效的 crontab 时间,其中可能包括诸如@reboot, @weekly, @midnight等查看man 5 crontab了解详情。


非 sed 替代品,例如awk可能是有序的。以下 awk 解决方案对我来说更有意义:

crontab -l | awk -v script="test.sh" '
  { field=6 }
  /^# / { field++ }
  index($field,script) { sub(/^#/,"") }
  1' \
| crontab -

虽然它有点长,但我发现它更容易阅读和理解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sed 编辑 crontab 的相关文章

  • 将 PHP 短开放标签替换为

    我有大量多年来编写的 php 文件 我需要将所有短开放标签正确替换为正确的显式开放标签 change
  • UNIX 统计时间格式

    是否可以格式化 stat 的时间输出 我在用 stat c n A z filename 在 bash 脚本中 但它的时间格式不是我想要的 是否可以在命令中更改此格式 或者我必须稍后手动执行此操作 示例输出如下 lib drwxr xr x
  • 如何从 LaTeX 执行 shell 脚本?

    我正在尝试在 LaTeX 中执行以下操作 documentclass article begin document execute usr local bin my shell script sh end document 想法是执行 us
  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 检查帐号是否为数字时出现语法错误

    if account nr 0 9 from account nr 0 9 这是为了检查帐号是否为数字 我收到语法错误 这个问题的早期版本缺少之间的空格if and 实际代码具有所需的空间 它显示以下错误消息 syntax error ac
  • C 有标准的队列实现吗?

    是否有 C 语言 附带 的队列数据结构实现 或者我必须开发自己的队列数据结构实现 这是一个学校项目 因此我必须使用标准 gcc 安装中存在的东西 或者必须自己实现一个 其他通用数据结构 如链表 堆栈等 又如何呢 尝试这个 Unix 附带了几
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • bash 脚本抱怨文件名太长

    所以我有一个脚本可以执行此操作 jq 是命令行 JSON 处理器 echo Getting LB Node IDs echo LB STATUS jq loadBalancer nodes id 最后一行的输出是 1 2 3 但是当我尝试将
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 如何安装 grunt-cli 而不出现错误?

    灵感来自 Chris Coyierpost http 24ways org 2013 grunt is not weird and hard 我决定尝试一下 grunt 但我在设置时遇到了很大的问题 首先 我安装了 Node js 然后我将
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • 使用 xlib 在屏幕顶部绘图

    我想在屏幕上的所有窗口顶部绘制一些图元 我在 C 中找到了一些代码并尝试将其移植以使用 python 的 xlib from Xlib display import Display from Xlib import X from Xlib
  • 如何从 HTTP URL 下载文件?

    我知道如何使用wget从FTP下载但我无法使用wget从以下链接下载 如果您将其复制并粘贴到浏览器中 它将开始下载 但我想将它直接下载到我们的服务器 这样我就不需要将它从我的桌面移动到服务器 我该怎么做 Thanks 这就是我所做的 wge
  • 在 AIX 中使用 Mailx 通过电子邮件发送 SQLPlus 查询结果的 Shell 脚本

    我有我需要的命令 如果我在提示符下执行这些命令 一切都会按预期进行 SQLPlus 运行查询 将结果导出到文件 然后 Mailx 将该文件通过电子邮件发送给我 sqlplus username pwd instance SPOOL home
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp

随机推荐

  • Rails:从控制器调用另一个控制器操作

    我需要从控制器 B 调用控制器 A 中的创建操作 原因是当我从控制器 B 调用时 我需要以不同的方式重定向 可以在 Rails 中完成吗 要使用另一个控制器 请执行以下操作 def action that calls one from an
  • 点击按钮时忽略 UIGestureRecognizer

    我设置了一个手势识别器 以便在点击屏幕时我的工具栏会向下滑动 当我点击栏上的按钮时 即算作一次点击 在这些情况下如何取消手势 Thanks 您可以查看 Simple GestureRecognizers 示例项目 http develope
  • 两个字符串之间的所有公共子字符串

    我正在使用 C 来查找两个字符串之间的所有公共子字符串 例如 如果输入是 S1 需要电子邮件方面的帮助 S2 需要电子邮件帮助 输出应该是 需要帮助电子邮件 下面的代码返回最长的公共子字符串 但我希望我的代码返回所有公共子字符串 任何帮助深
  • 像 Whatsapp 一样快速视频压缩

    我需要加快 Android 应用程序中的视频压缩速度 我使用的是 FFMPEG 压缩 80MB 视频需要 3 分钟 有谁知道更好的解决方案 我正在使用的命令是 data data com moymer app bin ffmpeg y i
  • 旋转图像并裁剪掉黑色边框

    我的应用程序 我正在尝试旋转图像 使用 OpenCV 和 Python 目前我已经开发了下面的代码 它旋转输入图像 用黑色边框填充它 给我 A 我想要的是 B 旋转图像内最大可能的区域裁剪窗口 我将其称为轴对齐的有界框 这本质上是相同的旋转
  • 如何在Excel中提取最后一个下划线之后的字符串的最后一部分

    我有以下示例数据 1 animated brand 300x250 2 animated brand 300x600 3 customaffin greenliving solarhome anim outage offer 如何在 Mic
  • 在.NET API中添加对PresentationCore.dll和PresentationFramework.dll的引用

    我试图在 NET 5 API 中引用PresentationCore dll 和PresentationFramework dll 但显然它还需要WindowsBase 这是我得到的错误 System TypeLoadException 无
  • 使用 data: URI 时有没有办法指定建议的文件名?

    例如 如果您点击链接 data application octet stream base64 SGVsbG8 浏览器将提示您下载一个文件 该文件包含超链接本身中以 Base64 形式保存的数据 有什么方法可以在标记中建议默认名称吗 如果没
  • 解析 - 使用关系与指针?

    我使用 Parse 作为我的后端 我在设置对象之间的正确关系时遇到问题 我基本上有一个名为 Post 的类 每个帖子都属于一个用户 PFUser 当获取帖子时 我希望用户信息与帖子一起获取 interface Post PFObject
  • gRPC Java 文件下载示例

    我正在寻找一种如何使用 gRPC 实现文件下载功能的方法 但我在文档中找不到这是如何完成的 做到这一点的最佳方法是什么 我想要一个保存文件的 gRPC 服务器和一个向 gRPC 请求某些内容的 gRPC 客户端 我已经查看了 Java 中的
  • 在 SwiftUI 中设置 TextField 的初始值 - 比较新旧值

    我看过很多有关如何使用空 TextField 来收集新值的示例和教程 但没有一个展示如何使用 TextField 来编辑值 在我的用例中 我希望用视图模型中的数据预填充 预填充 TextField 然后当用户编辑数据时 应启用 保存 按钮
  • matlab 将绘图导出为矢量格式

    之前我一直以光栅格式 JPG PNG 导出 Matlab 图形 有没有办法以矢量格式 SVG 从 Matlab 导出绘图 我需要它来将绘图插入 LaTeX 文档中 到目前为止我发现的唯一的东西是来自数学工作和答案堆栈交换 但这看起来太复杂了
  • 在哪里可以找到所有可用的带有 selenium 的 ChromeOptions 的列表?

    在哪里可以找到所有可用的带有 selenium 的 Chrome 选项的列表 在 python 环境中使用 selenium 进行爬行时 我必须在 chrome webdriver 中使用 flash 所以我试图找到一个允许 Flash 的
  • 提高 PHP GD 生成图像的质量

    我将开始使用 GD 库在 PHP 中构建地图生成器 我使用该库生成了一些图像 但它们的质量不佳 我只是想知道有什么方法可以提高图像质量 生成的图像是 我制作的代码是
  • 将阿拉伯语数据插入mysql数据库

    我尝试输入阿拉伯语文本并使用 php 将其插入到 mysql 数据库中 当打印该行时 阿拉伯语中的所有行如下所示 1 我将数据库设置为 字符集 utf8 UTF 8 Unicode 排序规则 utf8 general ci 以及数据库中的每
  • 使用复杂类型查询 Spark SQL DataFrame

    如何查询具有复杂类型 例如映射 数组 的 RDD 例如 当我编写这个测试代码时 case class Test name String map Map String String val map Map hello gt world hey
  • Zend Framework 2 - BjyAuthorize 始终拒绝访问

    我已经设置了bjyoungblood bjy authorize模块 但我目前正在得到一个403除在配置文件中配置的 URL 之外 每个 URL 都会出现 访问被拒绝 错误home route My module byjauthorize
  • 在烧瓶应用程序中保留全局状态[重复]

    这个问题在这里已经有答案了 我正在尝试将缓存字典保存在我的flask应用 据我了解 应用上下文 特别是烧瓶 g 对象应该用于此目的 Setup import flask as f app f Flask name 现在如果我这样做 with
  • 如何引用同一 appsettings.json 文件中的另一个值?

    我需要在 appsettings json 中的两个位置使用数据库连接字符串 是否可以在 json 文件中引入公共变量或 json path 相关引用以避免潜在的问题 如果能在不接触 C 代码的情况下拥有它 那就太棒了 Connection
  • 使用 sed 编辑 crontab

    我正在编写一个 sed 命令 该命令应取消注释 crontab 中的条目 有一个更好的方法吗 我想到的第一个选项是 sed Example crontab l 5 3 bash test sh sed 命令应取消注释该条目 这就是我现在所拥