파일 자체에서 가져온 날짜로 파일의 각 줄에 타임스탬프를 찍습니다.

파일 자체에서 가져온 날짜로 파일의 각 줄에 타임스탬프를 찍습니다.

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

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현재 줄에 현재 값을 인쇄합니다.

관련 정보