패턴 검색 및 파일의 값 바꾸기

패턴 검색 및 파일의 값 바꾸기

/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"를 생략하세요.

관련 정보