В канале (std -err/out )нет понятия пустой строки, это просто "нет вывода";
> printf ''
> printf '' | xxd
где null означает что-то
> printf '\0'
> printf '\0' | xxd
00000000: 00
В базе данных все наоборот, и чем меньше, тем лучше, поэтому пусть ваши скрипты молчат (пустая строка )и ваша БД пуста (null ).
Отдельные операторы печати будут печатать отдельные записи (строки )по умолчанию. Используйте один print
, объединив $4
и $0
:
% awk -F- '{print $4 $0}' input
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
Если некоторые дефисы в начале строк исчезнут, будет сложно выбрать строку, которую нужно добавить в начале каждой строки по номеру поля, так как это не всегда может быть поле 4, как в
$ cat file
/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
Вместо этого следующее выбирает второе-
-слово с разделителями после :
в каждой строке:
$ sed 's/^\([^:]*:[^-]*-\([^-]*\)\)/\2\1/' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
Или, возможно, более читабельно сawk
:
$ awk -F ':' '{ split($2,a,"-"); print a[2] $0 }' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
Предполагается, что строка состоит из двух:
-полей с разделителями, затем второе из них разбивается на -
и второе из полученных полей используется для вывода.
Если конечный бит каждой строки имеет статическое форматирование, то вы, очевидно, могли бы считать поля с конца, а не с начала, и использовать awk
вот так:
$ awk -F '-' '{ print $(NF - 5) $0 }' file
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
320/example.origin.live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9