타임 스탬프 bash를 사용하여 한 시간이 넘은 파일의 줄 삭제

케브

다음 작업을 수행하는 데 약간의 시간이 걸립니다.

hostname:timestamp다음을 포함하는 파일이 있습니다.

hostname1:1445072150
hostname2:1445076364

타임 스탬프가 1 시간 이상 지난 경우 확인하기 위해이 파일 (cron 작업 사용)을 쿼리하는 bash 스크립트를 만들고있는 경우 해당 줄을 제거하려고합니다. 아래는 지금까지 내가 가지고 있지만 파일에서 줄을 제거하지 않는 것 같습니다.

#!/bin/bash

hosts=/tmp/hosts
current_timestamp=$(date +%s)

while read line; do
    hostname=`echo $line | sed -e 's/:.*//g'`
    timestamp=`echo $line | cut -d ":" -f 2`
    diff=$(($current_timestamp-$timestamp))
    if [ $diff -ge 3600 ]; then
            echo "$hostname - Timestamp over an hour old. Deleting line."
            sed -i '/$hostname/d' $hosts
    fi
done <$hosts

한 시간이 넘었지만 파일에서 시간을 제거하는 데 문제가있는 호스트를 식별 할 때 타임 스탬프 부분이 올바르게 작동하도록 관리했습니다.

파일을 열어 두는 while 루프 때문일 수 있지만 해결 방법은 100 % 확실하지 않습니다. 또한 파일의 사본을 만들고 편집을 시도했지만 여전히 아무것도 없습니다.

대안 :이 작업을 수행하고 동일한 결과를 생성하는 더 좋은 방법이 있다면 제안을받을 수 있습니다. :)

어떤 도움이라도 대단히 감사하겠습니다.

건배

야노스

스크립트의 문제는 다음 줄이었습니다.

sed -i '/$hostname/d' $hosts

작은 따옴표 안의 변수는 해당 값으로 확장되지 않으므로 명령은 값 대신 문자 그대로 "$ hostname"을 바꾸려고합니다. 작은 따옴표를 큰 따옴표로 바꾸면 변수가 여기에 필요한 값으로 확장됩니다.

sed -i "/$hostname/d" $hosts

가능한 개선이 있습니다.

#!/bin/bash

hosts=/tmp/hosts
current_timestamp=$(date +%s)

while read line; do
    set -- ${line/:/ }
    hostname=$1
    timestamp=$2
    ((diff = current_timestamp - timestamp))
    if ((diff >= 3600)); then
        echo "$hostname - Timestamp over an hour old. Deleting line."
        sed -i "/^$hostname:/d" $hosts
    fi
done <$hosts

개선 사항 :

  • sed 명령에서 더 엄격한 패턴을 사용하여 더 강력하게 만들고 잠재적 인 오류를 방지합니다.
  • 하위 쉘없이 호스트 이름 부분과 타임 스탬프 부분을 추출하는 더 간단한 방법
  • 내부를 포함하여 더 간단한 산술 연산 ((...))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Bash를 사용하여 두 타임 스탬프 사이의 파일에서 줄을 검색하는 방법

분류에서Dev

새 타임 스탬프를 사용하여 파일의 일부 줄을 어떻게 다시 작성합니까?

분류에서Dev

Python v3.5를 사용하여 시작은 같지만 줄 끝이 다른 여러 텍스트 파일의 한 줄 삭제

분류에서Dev

타임 스탬프를 사용한 논리적 삭제

분류에서Dev

Yii CDateTimeParser를 사용하여 하루의 마지막 시간에 대한 타임 스탬프 생성 (23:59:59)

분류에서Dev

MATLAB에서 여러 파일의 고유 한 타임 스탬프를 하나의 파일로 제공

분류에서Dev

수천 개의 파일에서 타임 스탬프를 제거하기위한 Batch 또는 Bash

분류에서Dev

Ruby ActiveRecord 타임 스탬프를 사용한 단어의 시차

분류에서Dev

HDFS 파일 대상을 사용하여 SSIS의 hdfs로 푸시하는 동안 파일에 타임 스탬프를 제공하는 방법이 있습니까?

분류에서Dev

sed를 사용하여 0으로 끝나는 파일 이름 목록에서 타임 스탬프 패턴을 삭제하는 방법

분류에서Dev

sed를 사용하여 0으로 끝나는 파일 이름 목록에서 타임 스탬프 패턴을 삭제하는 방법

분류에서Dev

배치 스크립팅 타임 스탬프를 사용하여 파일 이동

분류에서Dev

정규식을 사용하여 타임 스탬프를 추출하고 다시 형식화하는 유일한 방법은 무엇입니까?

분류에서Dev

현재 날짜 및 타임 스탬프를 사용한 시간 차이 "분"

분류에서Dev

추가 된 날짜 및 타임 스탬프를 사용하여 여러 파일의 일괄 이름 바꾸기

분류에서Dev

stat를 사용하여 터치에 대한 타임 스탬프 제공

분류에서Dev

파일에서 두 타임 스탬프 사이의 줄 가져 오기

분류에서Dev

printf로 Bash의 정확한 타임 스탬프 (사소한 문제가 아님)

분류에서Dev

이름에 ddmmyy 타임 스탬프를 사용하여 Bash에서 파일을 정렬하는 방법

분류에서Dev

이름에 ddmmyy 타임 스탬프를 사용하여 Bash에서 파일을 정렬하는 방법

분류에서Dev

Bash 스크립트 : sed의 변수를 사용하여 파일의 마지막 "x"줄을 제외한 모든 줄을 삭제합니다.

분류에서Dev

한 시간 안에 타임 스탬프를 비교하는 PHP +/-

분류에서Dev

봄의 데이터 DynamoDBAutogenerated 타임 스탬프에 대한 시간대를 설정하는 방법

분류에서Dev

VBScript 타임 스탬프에 초를 추가하여 동일한 파일 복사

분류에서Dev

명령 줄 PDF 인쇄-타임 스탬프를 기반으로 한 자동 파일 이름

분류에서Dev

디렉토리의 수정 타임 스탬프를 변경하지 않고 임시 파일을 제거하는 방법은 무엇입니까?

분류에서Dev

Swift를 사용하여 텍스트 파일에서 한 줄 삭제

분류에서Dev

월의 타임 스탬프에서 WHERE를 사용하는 간단한 방법이 있습니까?

분류에서Dev

주말 시간을 제외한 Postgres의 타임 스탬프에 간격 시간을 추가하는 방법

Related 관련 기사

  1. 1

    Bash를 사용하여 두 타임 스탬프 사이의 파일에서 줄을 검색하는 방법

  2. 2

    새 타임 스탬프를 사용하여 파일의 일부 줄을 어떻게 다시 작성합니까?

  3. 3

    Python v3.5를 사용하여 시작은 같지만 줄 끝이 다른 여러 텍스트 파일의 한 줄 삭제

  4. 4

    타임 스탬프를 사용한 논리적 삭제

  5. 5

    Yii CDateTimeParser를 사용하여 하루의 마지막 시간에 대한 타임 스탬프 생성 (23:59:59)

  6. 6

    MATLAB에서 여러 파일의 고유 한 타임 스탬프를 하나의 파일로 제공

  7. 7

    수천 개의 파일에서 타임 스탬프를 제거하기위한 Batch 또는 Bash

  8. 8

    Ruby ActiveRecord 타임 스탬프를 사용한 단어의 시차

  9. 9

    HDFS 파일 대상을 사용하여 SSIS의 hdfs로 푸시하는 동안 파일에 타임 스탬프를 제공하는 방법이 있습니까?

  10. 10

    sed를 사용하여 0으로 끝나는 파일 이름 목록에서 타임 스탬프 패턴을 삭제하는 방법

  11. 11

    sed를 사용하여 0으로 끝나는 파일 이름 목록에서 타임 스탬프 패턴을 삭제하는 방법

  12. 12

    배치 스크립팅 타임 스탬프를 사용하여 파일 이동

  13. 13

    정규식을 사용하여 타임 스탬프를 추출하고 다시 형식화하는 유일한 방법은 무엇입니까?

  14. 14

    현재 날짜 및 타임 스탬프를 사용한 시간 차이 "분"

  15. 15

    추가 된 날짜 및 타임 스탬프를 사용하여 여러 파일의 일괄 이름 바꾸기

  16. 16

    stat를 사용하여 터치에 대한 타임 스탬프 제공

  17. 17

    파일에서 두 타임 스탬프 사이의 줄 가져 오기

  18. 18

    printf로 Bash의 정확한 타임 스탬프 (사소한 문제가 아님)

  19. 19

    이름에 ddmmyy 타임 스탬프를 사용하여 Bash에서 파일을 정렬하는 방법

  20. 20

    이름에 ddmmyy 타임 스탬프를 사용하여 Bash에서 파일을 정렬하는 방법

  21. 21

    Bash 스크립트 : sed의 변수를 사용하여 파일의 마지막 "x"줄을 제외한 모든 줄을 삭제합니다.

  22. 22

    한 시간 안에 타임 스탬프를 비교하는 PHP +/-

  23. 23

    봄의 데이터 DynamoDBAutogenerated 타임 스탬프에 대한 시간대를 설정하는 방법

  24. 24

    VBScript 타임 스탬프에 초를 추가하여 동일한 파일 복사

  25. 25

    명령 줄 PDF 인쇄-타임 스탬프를 기반으로 한 자동 파일 이름

  26. 26

    디렉토리의 수정 타임 스탬프를 변경하지 않고 임시 파일을 제거하는 방법은 무엇입니까?

  27. 27

    Swift를 사용하여 텍스트 파일에서 한 줄 삭제

  28. 28

    월의 타임 스탬프에서 WHERE를 사용하는 간단한 방법이 있습니까?

  29. 29

    주말 시간을 제외한 Postgres의 타임 스탬프에 간격 시간을 추가하는 방법

뜨겁다태그

보관