다음과 같은 반복 패턴이 있는 파일이 있습니다.
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
현재 줄에 현재 값을 인쇄합니다.