파일의 각 기존 줄 위에 새 줄을 추가합니다.

파일의 각 기존 줄 위에 새 줄을 추가합니다.

다음 줄을 포함하는 파일이 있습니다

This is an PLUTO
This is PINEAPPLE
This is ORANGE
This is RICE

각 줄 위에 새 줄을 만들고 다음과 같이 새 줄 출력에 마지막 문자열을 삽입하려면 어떻게 해야 합니까?

PLUTO:
This is an PLUTO
PINEAPPLE:
This is an PINEAPPLE
ORANGE:
This is an ORANGE
RICE:
This is an RICE

감사해요

답변1

awk줄 자체를 인쇄하기 전에 콜론이 뒤따르는 각 줄의 마지막 필드를 인쇄하는 데 사용됩니다 .

$ awk '{ print $NF ":"; print }' file
PLUTO:
This is an PLUTO
PINEAPPLE:
This is PINEAPPLE
ORANGE:
This is ORANGE
RICE:
This is RICE

단일 print문을 사용하지만 레코드 구분 기호(개행)와 (줄)을 명시적으로 인쇄하는 $0변형입니다 .

awk '{ print $NF ":" ORS $0 }' file

다양한 용도 printf:

awk '{ printf("%s:\n%s\n", $NF, $0) }' file

사용 sed:

$ sed 'h; s/.* //; s/$/:/; G' file
PLUTO:
This is an PLUTO
PINEAPPLE:
This is PINEAPPLE
ORANGE:
This is ORANGE
RICE:
This is RICE

주석이 달린 sed스크립트:

h;          # Copy the pattern space (the current line) into the hold space (general purpose buffer)
s/.* //;    # Remove everything up to the last space character in the pattern space
s/$/:/;     # Add colon at the end
G;          # Append the hold space (original line) with an embedded newline character
            # (implicit print)

답변2

이것을 시도해보세요

awk '{$0=$NF":\n"$0}1' file

관련 정보