用于搜索已在文本文件中占用的字符串的bash脚本

时间:2012-02-21 09:12:13

标签: bash shell

我想通过命令行输入一个字符串来bash脚本,然后输出到该字符串到具有当前系统时间的文本文件,如下所示。

outputLog.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

我使用以下bash脚本获取上面的输出

#!/bin/bash
echo "$1 = $(date)" >>/root/Desktop/scripts/outputLog.txt

In command line 
[root@localhost desktop]# ./myscript.sh name1

是否有任何可能的方法来搜索通过命令行输入的名称已在生成的输出文本文件中找到?如果找到则更新该名称字符串的当前系统时间

在命令行中输入

[root@localhost desktop]# ./myscript.sh name1

name1已在outputLog.txt中占用。我想将文本文件输出为

 name1 = Tue Feb  21 14:00 19 IST 2012(todays current system time)
    name2 =Tue Jan  21 14:05 19 IST 2012
    name3 = Tue Jan  21 14:20 19 IST 2012
    name4 =Tue Jan  21 14:45 19 IST 2012

如何使用当前系统时间更新该名称字符串。

2 个答案:

答案 0 :(得分:3)

 #!/bin/bash
 fgrep "${1}" /YOUR/OUTPUT/LOG &&
     sed -i "/${1}/ s/.*/${1} $(date)/" /YOUR/OUTPUT/LOG ||
     echo "${1} $(date)" >> /YOUR/OUTPUT/LOG

可能适合你。 注意如果您的nameN可以包含任何/,则会失败。

答案 1 :(得分:0)

在添加新时间戳之前,您可以使用grep -v删除给定用户名的现有条目。