更改日志中的日期

时间:2012-03-03 16:22:32

标签: bash sed

今天我有这个文件: a20 is (off) Jan 15我变成了这个: a20 is (on) Jan 16 但第二个日期是脚本运行的任何一天

date=$(date) 使用此sed命令:

sed -i '/'$1'/ s/off/on/' /home/josepas/Mantenimiento

sed -i '/'$1'/ s/).*/) /' /home/josepas/Mantenimiento

sed -i "/$1/ s/$/$date/g" /home/josepas/Mantenimiento

我想让这个单一的sed搜索以(somenumber)开头的行我听说过多个sed命令的选项-e,希望你能帮助我

2 个答案:

答案 0 :(得分:2)

这可能对您有用:

date="Jan 16"
echo "a20 is (off) Jan 15" |
sed '/^a[0-9]*/s/(off).*/(on) '"$date"'/'
a20 is (on) Jan 16

如果你想使用“明天日期”而你正在使用GNU sed,那么:

echo "a20 is (off) Jan 15" | 
sed '/^a[0-9]\+/s/^\(.*\)(off) \(.*\)/echo "\1(on) $(date -d '\''\2 tomorrow'\'' '\''+%b %d'\'')"/e'
a20 is (on) Jan 16

答案 1 :(得分:1)

您可以将s命令与;连接起来,并通过{ / }包围命令来进行一些分组。 e.g:

echo -e "a20 is (off) Jan 15\na21 is (off) Jan 15" | sed "/a20/ { s/off/on/; s/).*/) /; s/$/$(date)/ }"