изменить формат вывода текстового файла в unix [закрыто]

useraddes el único comando de los dos que está disponible en todos los sistemas de estilo Unix (que conozco ).

En Debian y sus derivados, adduseres un envoltorio para useraddque agrega cierta comodidad, como generar un grupo con el mismo nombre de forma predeterminada.

En Fedora, son lo mismo.

1
26.10.2018, 16:19
2 ответа

Я сделал небольшой awkскрипт:

awk '
{
    if ( $1 == "Day" )
        c=$2;
    else
        v[$1][c]=$2;
    next;
} END {
    print "Day","Count","Count2","Percent";
    for (day in v)
    {
        c1=(!(v[day]["Count"]) ? 0 : v[day]["Count"]);
        c2=(!v[day]["Count2"] ? 0 : v[day]["Count2"]);
        p=(c1>0 ? c2/c1*100 : 100);
        printf("%s %s %s %.0f%%\n",day,c1,c2,p);
    }
}
' ABC.txt | column -t

отправить вывод в файл, просто добавьте > XYZ1.txtв конец.

0
28.01.2020, 00:24

Если вам нужны дни в порядке появления, попробуйте эту адаптацию предложения RoVo:

awk -v"MN=1E100" '
$1 == "Day"     {c = $2
                 next
                }
                {v  [$1+0, c] = $2
                 if ($1 < MN) MN = $1
                 if ($1 > MX) MX = $1
                }
END             {C1 = "Count"
                 C2 = "Count2"
                 print "Day", C1, C2, "Percent";
                    for (i=MN; i<=MX; i++)      {T1 = v[i,C1] + 0
                                                 T2 = v[i,C2] + 0
                                                 PC = (T1>0?T2/T1:1)*100
                                                 if (T1 || T2) print i, T1, T2, PC "%" 
                                                }
                }
' OFS="\t" CONVFMT="%.0f" file
Day Count   Count2  Percent
10  210     105     50%
11  112     0       0%
12  275     118     43%
13  120     0       0%
15  0       119     100%
0
28.01.2020, 00:24

Теги

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