ファイル内で行を回転させます。一番上の行を一番下に移動して日付を追加します。

ファイル内で行を回転させます。一番上の行を一番下に移動して日付を追加します。

スクリプトで変更したいリストがあります。スクリプトを実行するたびに回転リストを取得できるように、一番上の項目を一番下に移動したいと思います。また、一番下に移動した行に日付を追加したいと思います。したがって。最上位フォルダは、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

おすすめ記事