다음 형식으로 판독값 목록을 제공합니다.
1 1 0 0 2 3 23101 23101 0 0 2 0 5 2 0 0
1 1 0 0 2 2 23104 23104 0 0 1 0 5 1 0 0
라벨에 매핑하는 적절하고 깔끔한 방법은 무엇입니까? 라벨은 고정된 형식이 아닙니다. 문서에서 열 1이 X에 매핑되고 열 2가 Y에 매핑된다는 것을 알고 있습니다.
출력은 prometheus
읽을 수 있도록 텍스트 파일로 이동하므로 필요한 형식은 다음과 같은 두 줄 형식이 됩니다.
# TYPE label_goes_here counter
label_goes_here value_goes_here
sh
이상적으로는 이 도구 나 ksh
기본 도구를 사용하고 싶습니다 . perl
그것도 괜찮습니다. 예를 들어 python
.
예제를 추가하도록 편집되었습니다.
반면:
1 1 0 0 2 3 23101 23101 0 0 2 0 5 2 0 0
예상되는 결과는 다음과 같습니다.
# TYPE name_of_label_1 counter
name_of_label_1 1
# TYPE name_of_label_2 counter
name_of_label_2 1
# TYPE name_of_label_3 counter
name_of_label_3 0
etc.
etc.
# TYPE name_of_label_16 counter
name_of_label_16 0
답변1
그리고 awk
:
LABELS='name_of_label_1 name_of_label_2 ...' awk '
BEGIN{split(ENVIRON["LABELS"], label)}
{
for (i = 1; i <= NF; i++)
print "# TYPE", label[i], "counter\n"label[i], $i
}' < input-file
답변2
이것이 귀하의 요구 사항을 충족하는지 알려주십시오.
labels.txt
테스트에 사용된 파일:
label_zero
label_one
label_two
label_three
label_four
- Perl 스크립트는 라벨이 소진될 때까지 각 열에 라벨을 적용합니다.
echo "1 1 0 0 2 3 23101 23101 0 0 2 0 5 2 0 0" |
perl -e 'open($lf, "<", "labels.txt");
@lbs = <$lf>;
chomp(@lbs);
@cols = split(/ /, <STDIN>);
for $i (0..$#cols) {
printf("%s %s\n", $lbs[$i] || "label_".$i, $cols[$i])
};'
- 산출:
label_zero 1
label_one 1
label_two 0
label_three 0
label_four 2
label_5 3
label_6 23101
label_7 23101
label_8 0
label_9 0
label_10 2
label_11 0
label_12 5
label_13 2
label_14 0
label_15 0
답변3
다음 명령으로 완료
echo "1 1 0 0 2 3 23101 23101 0 0 2 0 5 2 0 0"| sed "s/ /\n/g"| awk '{print "# TYPE name_of_label_1 counter"NR}{print "name_of_label_"NR " " $0}'
산출
# TYPE name_of_label_1 counter1
name_of_label_1 1
# TYPE name_of_label_1 counter2
name_of_label_2 1
# TYPE name_of_label_1 counter3
name_of_label_3 0
# TYPE name_of_label_1 counter4
name_of_label_4 0
# TYPE name_of_label_1 counter5
name_of_label_5 2
# TYPE name_of_label_1 counter6
name_of_label_6 3
# TYPE name_of_label_1 counter7
name_of_label_7 23101
# TYPE name_of_label_1 counter8
name_of_label_8 23101
# TYPE name_of_label_1 counter9
name_of_label_9 0
# TYPE name_of_label_1 counter10
name_of_label_10 0
# TYPE name_of_label_1 counter11
name_of_label_11 2
# TYPE name_of_label_1 counter12
name_of_label_12 0
# TYPE name_of_label_1 counter13
name_of_label_13 5
# TYPE name_of_label_1 counter14
name_of_label_14 2
# TYPE name_of_label_1 counter15
name_of_label_15 0
# TYPE name_of_label_1 counter16
name_of_label_16 0