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