搜索模式并替换文件中的值

搜索模式并替换文件中的值

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

我在文件 test.txt 中有这些行。我必须搜索“#1520325239”的模式并将其替换为从命令“date -d @1520325239”获得的值。像这样的线路还有很多。我必须读取每一行并将其替换到同一个文件中。

答案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”首先测试您的结果。

相关内容