パターン検索とファイルの値の変更

パターン検索とファイルの値の変更

/home/digadm02/.bash_history:#1520325239 /home/digadm02/.bash_history:sudo su

test.txt ファイルに次の行があります。 "#1520325239" パターンを検索し、"date -d @1520325239" コマンドで取得した値に置き換える必要があります。このようなラインがたくさんあります。各行を読み、同じファイルに置き換える必要があります。

答え1

よく理解している場合、タイムスタンプは1つではなく、同様の行が複数あることです。このスクリプトは必要な代替操作を実行する必要があります。

#!/bin/bash

# get timestamps from the file
dates=`sed -e '1,$s/^.*#\(.*\) \/.*/\1/' /tmp/test.txt`

for date in $dates
do
    # get human readable format from timestamp
    newdate=`date -d @${date}`
    # replace timestamp with human readable date
    sed -i "1,\$s/\#$date/$newdate/" /tmp/test.txt
done

答え2

必要に応じて、次のコマンドを使用できます。

sed -i s/#1520325239/$(date -d @1520325239)/g .bash_history

答え3

sedを使う sed -i "/#1520325239/c$(date -d @1520325239)" test.txt

-i ファイルをその場で修正します。最初に結果をテストするには、「i」を省略してください。

関連情報