Linux

搜尋模式並替換文件中的值

  • April 5, 2018

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

我在文件 test.txt 中有這些行。我必須搜尋“#1520325239”的模式並將它們替換為從命令“date -d @1520325239”中獲得的值。有很多這樣的行。我必須閱讀每一行並將其替換在同一個文件中。

如果我理解你的話,時間戳不僅僅是一個,而是許多類似的行。這個腳本應該做你想要的替換:

#!/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

您可以根據需要使用以下命令

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

引用自:https://unix.stackexchange.com/questions/435674