Итак, у меня есть текстовый файл, который я использую, который содержит несколько цветовых кодов. Я хочу использовать команду grep для регулярных выражений, а затем передать ее по конвейеру, чтобы отсортировать по их альфа-значению и вывести результат в новый файл. Но в середине я хочу использовать свою собственную программу C, которая объединяет альфа-значения с кодами, у которых их еще нет, и которые я затем хочу отсортировать. Команды и программа C были протестированы отдельно и работают нормально, моя проблема заключается в том, чтобы передать вывод grep во входной файл моего C, а затем отсортировать его и вывести в новый файл. Я делаю все это внутри make-файла, и в настоящее время он компилируется, но ничего не печатает в новый выходной файл.
Команда:
build-test: test.c
gcc test.c -o test
run-test: build-test
grep -iE '^#[a-f0-9]{6}([a-f0-9]{2})?$$' colours.txt | ./test | sort --stable -rk1.8 > rgba-colours.txt
C Программа:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
int lines = 1;
char line[1000], alpha[] = "ff";
extern FILE *stdin;
stdin = fopen("colours.txt", "r");
while (fgets(line, 1000, stdin) != NULL)
{
line[strlen(line) - 1] = 0;
lines += 1;
if (strlen(line) == 7)
{
strcat(line, alpha);
}
}
fclose(stdin);
return 0;
}
Colours.txt
#b293a6
#a69d36a2
#067806
#7f0bf7ef
#f8b366
#042847421
#8946d7
#c927d4
#3e568bff
#3e1ce1
#11570a00
#e02a67
#afe6e
#1a283af
#44999e
#b07c2292
#0e6da9
#31511bxf
#25680a10
#866156
#dd85