Как использовать sed для извлечения чисел из строки через запятую? - PullRequest
0 голосов
/ 04 апреля 2020

Мне удалось извлечь следующий ответ и разделить его запятыми. Это строка, разделенная запятыми, и меня интересуют только значения идентификатора account_id, разделенные запятыми. Как вы сопоставляете шаблон с использованием sed?

Вход : ACCOUNT_ID,711111111119,ENVIRONMENT,dev,ACCOUNT_ID,111111111115,dev

Ожидаемый Выход : 711111111119, 111111111115

Моя $input переменная хранит входные данные

Я попробовал следующее, но она объединяет все числа, и я хотел бы сохранить запятую ','

echo $input | sed -e "s/[^0-9]//g"

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Я думаю, вам лучше обслужить awk:

awk -v FS=, '{for(i=1;i<=NF;i++)if($i~/[0-9]/){printf sep $i;sep=","}}'

Если вы действительно хотите sed, вы можете go для

sed -e "s/[^0-9]/,/g" -e "s/,,*/,/g" -e "s/^,\|,$//g"
1 голос
/ 04 апреля 2020
$ awk '
BEGIN {
    FS = OFS = ","
}
{
    c = 0
    for (i = 1; i <= NF; i++) {
        if ($i == "ACCOUNT_ID") {
            printf "%s%s", (c++ ? OFS : ""), $(i + 1)
        }
    }
    print ""
}' file
711111111119,111111111115
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...