awk не работает с конвейерным выводом из sed

Простая реализация оболочки:

#!/usr/bin/env bash

char=""
count=""

echo "$1" | while read -n1 -r c; do
    if [ "$char" = "" ]
    then
        char="$c"
        continue
    fi

    if [ "$count" = "" ]
    then
        count="$c"

    for i in $(seq 1 "$count")
    do
        printf "%s" "$char"
    done

    char=""
    count=""

    continue
    fi
done

printf "\n"

Пример:

$./transform.sh A2B3C4D0E1
AABBBCCCCE

Однако он не работает с числами больше 9. Нужно было бы реализовать некоторую большую логику, чтобы различать буквы и числа.

5
23.09.2021, 11:17
1 ответ
awk '{for(i=1;i<=NF;i++){if($i ~ /cdsmon/){print $(i+1),$(i+3),$(i+4)}}}' filename

выход

/tmp/instance0 core dumped
/tmp/instance0 core dumped
/tmp/instance1 core dumped
/tmp/instance2 core dumped





awk '{for(i=1;i<=NF;i++){if($i ~ /cdsmon/){print $(i+1)}}}' filename
/tmp/instance0
/tmp/instance0
/tmp/instance1
/tmp/instance2
1
23.09.2021, 19:05

Теги

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