我是bach脚本的新手。以下是我用来搜索通过命令行输入的名称的代码,并在outputLog.txt中搜索输入的字符串。如果发现更新了该名称字符串的当前系统时间。
在命令行中 [root @ localhost desktop]#。/ myscript.sh name1
Logone2.txt
name1 = Tue Jan 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
我的问题是当我尝试输入name1时,它会使用当前系统时间进行更新,同时它也会作为最后一个条目附加。
Eg:Logone2.txt
name1 = Tue Feb 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
name1 = Tue Feb 20 14:00 19 IST 2012 (appended entry)
我只想用当前系统时间附加字符串,如果在Logone2.txt.IF中找不到,则在Logone2.txt中找到通过命令行输入的字符串(name1),用当前系统时间更新名称如下。
Eg:Logone2.txt
name1 = Tue Feb 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
以下是使用
的代码#!/bin/bash
echo "${1} $(date)" >> /root/Desktop/scripts/Logone2.txt
fgrep "${1}" /root/Desktop/scripts/Logone2.txt && \
sed -i "/${1}/ s/.*/${1} = $(date)/" /root/Desktop/scripts/Logone2.txt || \
echo "${1} $(date)" >> /root/Desktop/scripts/Logone2.txt
答案 0 :(得分:1)
如果我说得对,我的第一个想法是用sed重写整个文件替换name1。例如
cat Logone2.txt | sed "s/^name1=.*/name1=`date`/g" > newfile.txt