スクリプトで変更したいリストがあります。スクリプトを実行するたびに回転リストを取得できるように、一番上の項目を一番下に移動したいと思います。また、一番下に移動した行に日付を追加したいと思います。したがって。最上位フォルダは、rclone を使用して以前のバックアップを保存するためにも使用されます。
old1
old2
old3
これに関して
old2
old3
old1 date time
使用しようとしたコードが見つかりましたが、上部アイテムが移動せずに下部にコピーするだけで、次のような出力が得られます。
old1
old2
old3
old1 date time
old1 date time
私が試したコード# Rotate the BACKUPLIST-file, deleting the top entry and adding a new entry at the bottom
OLDEST=$(head -1 $BACKUPLIST | sed 's/ .*//') # The oldest, extra backup-version
COUNT=$(cat $BACKUPLIST | wc -l) # Number of files in list
((COUNT=$COUNT-1))
tail -$COUNT $BACKUPLIST > $BACKUPLIST.tmp
echo $OLDEST $(date) >> $BACKUPLIST.tmp # Add a new line to the bottom, including today's date
ベストアンサー1
フォーマット文字列から正しいエスケープを取得するのは少し面倒ですが、与えられたdate
場合
$ cat file
old1
old2
old3
それから
$ cat << 'EOF' | ed -s file
1m$
r !date +\ \%x\ \%X
.-1,.j
,p
EOF
old2
old3
old1 2019-07-25 05:42:32 PM
または(一行で)
printf '%s\n' '1m$' 'r !date +\ \%x\ \%X' '.-1,.j' ',p' | ed -s file
ファイルを所定の位置に編集するには、p
(印刷)をwq
(書き込み終了)に置き換えます.もちろん、%x
およびを他の書式指定子に置き換えることもできます。%X