2012-02-21 8 views
0

新しいbachスクリプトが追加されました。次のコードは、コマンドラインで入力した名前を検索し、outputLog.txt .ifの入力文字列を検索して、その名前文字列の現在のシステム時刻を更新するコードです。コマンドラインで出力テキストファイルの文字列をコマンドライン引数として更新中にバッチスクリプトの問題が発生する


[ルート@ localhostのデスクトップ]#./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を入力しようとしているときに私の問題があり、それはそのISも、現在のシステム時刻で更新されます最後のエントリとして追加します。

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で発見され、コマンドラインから入力された文字列Logone2.txt.IF(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 

は、私は右のそれを得た場合、私の最初のアイデアは、SEDとNAME1置き換えるファイル全体を書き換えることである

#!/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

答えて

1

を使用してコードIAMです。例えば

cat Logone2.txt | sed "s/^name1=.*/name1=`date`/g" > newfile.txt 
関連する問題