Используйте awk, чтобы добавить к строке определенное поле.

В канале (std -err/out )нет понятия пустой строки, это просто "нет вывода";

> printf '' 
> printf '' | xxd

где null означает что-то

> printf '\0'
> printf '\0' | xxd
00000000: 00

В базе данных все наоборот, и чем меньше, тем лучше, поэтому пусть ваши скрипты молчат (пустая строка )и ваша БД пуста (null ).

1
29.01.2020, 10:14
2 ответа

Отдельные операторы печати будут печатать отдельные записи (строки )по умолчанию. Используйте один print, объединив $4и $0:

.
% awk -F- '{print $4 $0}' input
320/example-origin-live/ngrp:tennis-320-fd1d9b92-69e2-446c-a3e6-45b33a55efc9
5
28.04.2021, 23:25

Если некоторые дефисы в начале строк исчезнут, будет сложно выбрать строку, которую нужно добавить в начале каждой строки по номеру поля, так как это не всегда может быть поле 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
1
28.04.2021, 23:25

Теги

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