今天我有这个文件:
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,希望你能帮助我
答案 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)/ }"