파일 자체에서 얻은 날짜를 사용하여 파일의 각 줄에 타임스탬프를 찍습니다.

파일 자체에서 얻은 날짜를 사용하여 파일의 각 줄에 타임스탬프를 찍습니다.

다음과 같은 반복 패턴이 있는 파일이 있습니다.

date
line 1
line 2
...
line x

예:

10/30/2016 12:10:00
xxx 123
yyy 456
zzz 789

10/30/2016 12:20:00
xxx 234
yyy 567
zzz 890

각 행에 해당 날짜의 타임스탬프를 어떻게 추가할 수 있습니까?

10/30/2016 12:10:00
10/30/2016 12:10:00 xxx 123
10/30/2016 12:10:00 yyy 456
10/30/2016 12:10:00 zzz 789
10/30/2016 12:20:00
10/30/2016 12:20:00 xxx 234
10/30/2016 12:20:00 yyy 567
10/30/2016 12:20:00 zzz 890

나는 AWK가 작동해야 한다고 생각하지만, 나는 그것에 대한 경험이 많지 않습니다. 미리 감사드립니다!

답변1

한 가지 가능성은 다음과 같습니다.

awk '/^[[:digit:]/]+[[:space:]]+[[:digit:]:]+/ {d=$1 " " $2; print; next; } /[^[:space:]]/ { print d " " $0 }'

이는 날짜와 일치해야 하는 일련의 /숫자와 공백, 일련의 숫자 및 s가 뒤따르는 일련의 숫자와 일치합니다 . :하나가 발견되면 처음 두 필드를 변수에 저장한 d다음 이 줄을 인쇄하고 계속합니다. 그런 다음 공백이 아닌 문자가 하나 이상 포함된 줄을 찾을 때마다(예제에서 빈 줄을 제거한 것으로 보이므로) d현재 줄의 현재 값을 인쇄합니다.

관련 정보