我尝试使用 sed 或其他东西来替换 /opt/tin/toss 中的一些行,使其成为 *
例如
37 7 * * * /opt/tin/toss
43 7 * * * /opt/tin/te1
58 7 * * * /opt/tin/test2
输出:
37 * * * * /opt/tin/toss
43 7 * * * /opt/tin/te1
58 7 * * * /opt/tin/test2
通常情况下,7 是随机生成的,可以是 2、4 或 8,从 0 到 24。
答案1
sed '/\/opt\/tin\/toss/ s/^\([^ ]* \+\)[^ ]*\( .*\)$/\1*\2/'
你可以将其读作,
在有的地方/opt/tin/toss
,替换匹配的模式
^
行首,后跟
\([^ ]* \+\)
第一组任意数量\(
的[^ ]*
字符,直到一个或多个空格\+
,然后结束组\)
[^ ]*
接下来是[^ ]*
任何东西,直到空间
\( .*\)
接下来是第二组\( .*\)$
匹配空格,然后是任何内容,直到结束
和
/\1*\2/
第一组,然后*
是第二组。
答案2
sed 的一个例子
sed 's/^\([0-9]*\) [0-9]* *\(\* *\* *\* *\/opt\/tin\/toss.*\)$/\1 * \2/'
这\([0-9]*\)
将匹配第一个数字并将值保留在\1
这\(\* *\* *\* *\/opt\/tin\/toss.*\)
将匹配命令行上的最后 3 颗星,并将该值保留在\1