Добавьте новые строки над каждой существующей строкой в файле

Вы также можете попробовать эту команду 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.
0
12.12.2018, 12:45
2 ответа

Использование 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)
5
28.01.2020, 02:15

Попробуйте этот awk

awk '{$0=$NF":\n"$0}1' file
2
28.01.2020, 02:15

Теги

Похожие вопросы