AWK - 다음 두 줄의 시작 부분에 이전 줄을 추가합니다.

AWK - 다음 두 줄의 시작 부분에 이전 줄을 추가합니다.

다음과 같은 문서가 있습니다.

Bob:
This is my line
This is also my line
Alfred:
What a great day!
What should we do!
Jess:
Its so hot
Lets go to the Beach

형식은 늘 똑같아 늘 똑같아

speaker
line1
line2
speaker
line1
line2

추가 줄 등은 없었습니다.

각 줄의 시작 부분에 "스피커"가 있기를 원합니다. 예를 들면 다음과 같습니다.

Bob: This is my line
Bob: This is also my line
Alfred: What a great day!
Alfred: What should we do!
Jess: Its so hot
Jess: Lets go to the Beach

awk를 사용하여 각 "n번째" 줄을 추출하려고 합니다.

awk '{if (NR % 3 == 1) print $0}'

하지만 다음 두 줄의 시작 부분에 다시 추가하는 방법을 잘 모르겠습니다.

당신의 도움을 주셔서 감사합니다

답변1

awk 'NR%3==1{ name=$0; next } { print name, $0 }' file

조건이 true이면 레코드를 변수에 저장하고 레코드 name처리를 계속합니다 .next

그렇지 않으면 name현재 레코드를 인쇄합니다.

답변2

나는 논리를 바꿀 것이다. 최신 발표자를 가져와 다른 발표자가 나타날 때까지 다른 모든 행 앞에 고정합니다. 텍스트가 한 줄 또는 두 줄 이상인 경우 이 방법이 더 강력할 수 있습니다.

awk '/^[[:alpha:]]+:$/ {speaker=$1;next} {print speaker,$0}' file

답변3

sed지정된 파일 형식에 따라 다음 방법을 사용하여 완료할 수 있습니다.

sed -e '
  h;N;s/\n/ /
  n;H;g;s// /
' file

관련 정보