RHEL 5.8で/bin/bashを使用してファイルを自動的に編集したいと思います。ファイルを検索してファイルの1行を置き換えるには、スクリプトが必要です。ライン例:
Other line
Current date 01121990
Other line
この行を検索し、日付文字列をスケジュールされた日付に置き換えます。ファイルはサーバー固有のファイルからコピーされるため、新しいファイルにエコーを表示したり日付を入力したりすることはできません。ありがとうございます!
答え1
your_date='your desired date'
sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file
これが最も簡単な方法です。これは、置き換えられる日付を含むすべての行が「現在の日付」で始まる唯一の行でもあると仮定します。
このコマンドを実行するユーザーレベルには、ファイルを編集する権限も必要です。
-i はインライン編集を意味します。つまり、ファイルを直接編集するという意味です。
^Current date.*
次に始まるすべての行を意味します。現在の日付 そして何とか終わります。つまり、行全体をsedの2番目の/.../セクションの内容に置き換えます。
sedステートメントの周りにDouble "を使用して、変数が文字列ではなく変数として使用されるようにします。
答え2
ed
できるファイル編集が進行中です。しかも!編集したファイルのinode番号は変更されません。
file='/path/to/file'
your_date='your desired date'
ls -i "$file"
printf '%s\n' H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file"
ls -i "$file"