procure o padrão e substitua o valor em um arquivo

0

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

Eu tenho esse tipo de linhas no arquivo test.txt. Eu tenho que procurar o padrão de "# 1520325239" e substituí-los com o valor que recebo do comando 'date -d @ 1520325239'. Existem muitas linhas como essa. Eu tenho que ler cada linha e substituí-lo no mesmo arquivo.

    
por Pooja 05.04.2018 / 09:18

3 respostas

0

Se eu entendi bem, o timestamp não é apenas um, mas muitos em linhas semelhantes. Este script deve fazer a substituição desejada:

#!/bin/bash

# get timestamps from the file
dates='sed -e '1,$s/^.*#\(.*\) \/.*//' /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
    
por 05.04.2018 / 09:50
0

Você pode usar o comando abaixo conforme sua necessidade

sed -i s/#1520325239/$(date -d @1520325239)/g .bash_history
    
por 05.04.2018 / 09:37
0

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

-i irá modificar o arquivo no lugar. Omitir o "i" para testar seus resultados primeiro.

    
por 05.04.2018 / 09:39