Сравнивая ваш ввод с выводом, кажется, что ваше описание того, что вы хотите, неверно. Вы говорите «Я хочу настроить шаблон#:(на число, за которым следует двоеточие )и добавить новую строку после» , хотя более точным описанием было бы:
Этот sed
скрипт реализует это. Он использует расширенные регулярные выражения(-E
)вместо базового регулярного выражения sed
по умолчанию, чтобы свести к минимуму количество необходимых экранов обратной косой черты и улучшить читаемость.
$ sed -E -e '2,$ {s/ ([0-9]+:)/\n\1/g; s/^[^0-9]/\n&/}' file.txt
random_string
83: some words
45: large error report
326: send emails to certain peple
random_string
34: some words
143: job success
Кстати, если перед [0-9]+:
есть табуляция, а не пробелы, или несколько пробелов, используйте [[:space:]]+
вместо пробела. например.
sed -E -e '2,$ {s/[[:space:]]+([0-9]+:)/\n\1/g; s/^[^0-9]/\n&/}' file.txt
попробуй:
sed -E 's/(concat_ws\("\|",[[:space:]]*)([^,]*),/\1(\2),/;
s/(concat_ws\("\|",[[:space:]]*)([^,]*),/\1(CAST (\2 as string)),/' infile
первая часть окружает данные _столбец с дополнительными круглыми скобками;
вторая часть добавляется в CAST .
Выход:
SELECT concat_ws("|",(CAST ((max(date_column)) as string)),substr(abc,1,9)) key
SELECT concat_ws("|",(CAST ((xyz_date_column) as string)),abc) key