Как вставить подстроку определенной длины и добавить текст этой подстроки к концу строки в unix - PullRequest
0 голосов
/ 28 февраля 2020

Вопрос отредактирован

Искренние извинения за редактирование вопроса !!

Я хочу подстроку, используя начальную и конечную позиции для 2 строк "20200224" и "LN" ». И добавьте этот результат подстроки текста в конец строки.

Например, EDITED INPUT TEXT

2020-02-25
07:24|/prd/data_fabric/prd_dfab_open/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-0.orc
2020-02-25
07:24|/prd/data_fabric/prd_dfab_open/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-1.orc

я хочу подстроку "20200224" / "20200225" который имеет начальное положение = 20 и конечное положение = 27 и добавляет то же самое в конце каждой строки, как показано ниже,

2020-02-25
07:24|/prd/data_fabric/prd_dfab_open/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-0.orc|20200224|LN
2020-02-25
07:24|/prd/data_fabric/prd_dfab_open/acct/process_date=20200224/data_src=ACB/source_country_code

= LN / ACB_ACCT_HK_LN_01-part-1.orc | 20200224 | LN

Как и в этом файле, в файле есть еще строки.

Я хотел бы выполнить поиск на основе 2 наборов строк "process_date =" и "source_country_code =" и хочу принимать значения между "и /, что 20200224 и LN. Добавьте то же самое в конец строки с разделителем | 1021 *

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Использование awk:

line='/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-1.orc'

Выше может быть достигнуто путем чтения файла строка за строкой.

var=`echo $line| tr  '=' ' '| awk '{ print $2 }' | tr  '/' ' ' | awk '{ print $1}'`

Чтение чего-либо после =, затем чтение что-нибудь до /

echo $line$var
0 голосов
/ 28 февраля 2020

Чтобы сопоставить символы с 20-го по 27-й из строки и вставить их в конец строки:

paste -d'|' input_file  <(cut -c20-27 input_file)
/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-1.orc|20200224
/acct/process_date=20200225/data_src=ACB/source_country_code=MO/ACB_ACCT_HK_MO_01-part-0.orc|20200225

Чтобы сопоставить первое число в строке, и вставить его в конце строка:

sed -i 's/\([0-9]\+\)\(.*\)/\1\2|\1/' input_file
/acct/process_date=20200224/data_src=ACB/source_country_code=LN/ACB_ACCT_HK_LN_01-part-1.orc|20200224
/acct/process_date=20200225/data_src=ACB/source_country_code=MO/ACB_ACCT_HK_MO_01-part-0.orc|20200225
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...