2012-02-21 40 views
0

Iam新增至bach脚本。以下是我用来搜索通过命令行输入的名称的代码,并在outputLog.txt中搜索输入的字符串。如果发现更新该名称字符串的当前系统时间。批处理脚本问题,同时更新输出文本文件字符串作为命令行参数

在命令行
[根@本地桌面]#./myscript.sh名1

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 

我的问题是当我试图进入名1,它是与当前的系统时间也是其被更新作为最后一项添加。

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字符串(名称1)发现通过命令行输入在Logone2.txt被发现,更新的名称目前的系统时间如下。

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

你的问题是? – kev 2012-02-21 11:25:47

回答

1

代码IAM如果我猜中了我的第一个想法是重写整个文件,SED替代名1。例如

cat Logone2.txt | sed "s/^name1=.*/name1=`date`/g" > newfile.txt 
相关问题