通过 ID 在文本中查找单词并替换同一行中的其他单词
Find word in text by ID and replace other word in the same line
我有带有一些规则的 crontab。我需要找到带有服务器 ID 的一行,然后替换该行末尾的天数。
$ crontab -l
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 64
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15
服务器ID:19122391
天数:64
因此,我需要将数字 64
更改为另一个,例如 crontab
中的 100。要找到一行,我使用此命令 awk '/19122391/{print}' crontab.bak
,但是如何替换行中的最后一个数字,我找不到解决方案。
我可以使用 bash 脚本来执行此操作吗?
使用awk
$ awk -i inplace '/19122391/{$NF=100}1' crontab.bak
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 100
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15
使用sed
$ sed -i '/19122391/s/[0-9]*$/100/' crontab.bak
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 100
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15
我有带有一些规则的 crontab。我需要找到带有服务器 ID 的一行,然后替换该行末尾的天数。
$ crontab -l
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 64
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15
服务器ID:19122391
天数:64
因此,我需要将数字 64
更改为另一个,例如 crontab
中的 100。要找到一行,我使用此命令 awk '/19122391/{print}' crontab.bak
,但是如何替换行中的最后一个数字,我找不到解决方案。
我可以使用 bash 脚本来执行此操作吗?
使用awk
$ awk -i inplace '/19122391/{$NF=100}1' crontab.bak
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 100
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15
使用sed
$ sed -i '/19122391/s/[0-9]*$/100/' crontab.bak
00 6 * * * /home/scripts/User/19122391_User_Server_Notification_shutdown_delete.sh 100
00 16 * * * /home/scripts/User/20045967_User_Server_Notification_shutdown_delete.sh 15