2012-05-09 2 views
1

をsedのは次のようにオフに開始する、をcache.md:私はシェルスクリプトを記述しようとしている使用して、私はファイルを持っているのMac OS Xのライオン上のテキストファイルの最初の行を置き換えるために

# 2012-05-09.8271 
CACHE MANIFEST 

CACHE: 
/index.html 

(OS X LionのAutomatorを使用して)最初の行を置き換え、テキスト(ハッシュ後)を今日の日付、ドット、および乱数に変更します。

これまで私が持っていたbashスクリプトはありますが、何もしません。

_now=$(date +"%Y-%m-%d") 
_rand=$RANDOM 
sed -i '' '1 s/[\d\-\.]+/$_now.$_rand/' ~/Desktop/cache.mf 

答えて

2

このsedコマンドを使用してください:

+0

あなたのものは一番近いものでした。私は正規表現で*。を使用することについては野生ではありませんが、sedの1行の制限を使用すると安全です。 –

1

あなたがsed式を去ったように見えます!

私はあなたのsedの式自体チェックしていないが、ベースの問題は、-eオプションを使用してsedの発現を同定する必要がある

:ここでは

sed -i '' -e '1 s/[\d\-\.]+/$_now.$_rand/' ~/Desktop/cache.mf 
+0

$ _ varsは '' 'で囲まれているためシェルによって解釈されません最初の '1'は入力データの'# 'で動作しません。 – Benj

1

屋が行く:

_now=$(date +"%Y-%m-%d") 
_rand=$RANDOM 
sed -i -e "s/# [0-9]\+-[0-9]\+-[0-9]\+.[0-9]\+/\# $_now.$_rand/" ~/Desktop/cache.mf 
+0

これは機能しません。それは私のデスクトップ上にオリジナルと同じcache.mf-eファイルを作成するだけです。私はOS X Lionを使っているので、他のすべてのものとは異なるsed構文を持っているので、余分なものがあります。 –

+0

私はLinux Mint 12でこれをテストしました.... sedは違うと驚きました。 –

+0

これを試してください:sed -i "s /#[0-9] \ + - [0-9] \ + - [0-9] \ +。[0-9] \ +/\#$ _now。 $ _rand/"〜/ Desktop/cache.mf ...."の前にextryを必要とするかもしれません。 –

関連する問題