Вы также можете попробовать эту команду awk,
awk -v RS="" '{gsub (/\n/," ")}1' file
Пример:
$ (echo This; echo is; echo a; echo test.) | awk -v RS="" '{gsub (/\n/," ")}1'
This is a test.
Использование 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)