команда для замены определенной подстроки и преобразования ее в строку

Сравнивая ваш ввод с выводом, кажется, что ваше описание того, что вы хотите, неверно. Вы говорите «Я хочу настроить шаблон#:(на число, за которым следует двоеточие )и добавить новую строку после» , хотя более точным описанием было бы:

  • замените пробел перед любым количеством цифр, за которым следует двоеточие, на новую строку.
  • вставить новую строку перед каждой не -пустой строкой, не начинающейся с цифры.
  • пропустить первую строку ввода, потому что в ней ничего не нужно менять.

Этот 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
1
16.10.2020, 20:10
1 ответ

попробуй:

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
0
18.03.2021, 22:57

Теги

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