Добавить список значений столбцов A и B, разделенных пробелом, и показать результат суммирования

Вы не можете отключить SELinux без перезагрузки.

Вы можете установить его в разрешающий режим во время выполнения с помощью

setenforce Permissive

или

setenforce 0

В этом режиме SELinux ведет себя так, как будто он отключен; то есть он не применяет правила, а просто регистрирует любые их нарушения (в файле /var/log/avc.log, /var/log/audit/audit.logили /var/log/audit.log, в зависимости от того, какие службы запущены на вашем компьютере ).

-2
28.12.2020, 19:26
2 ответа

Сawk:

awk '{ sum_A +=$1; sum_B+=$2; };
END{ print "Total count Column A = " sum_A +0;
     print "Total count column B = " sum_B +0;
}' infile

на языке , который является инструментом для обработки текста -, $1представляет значение первого столбца, $2представляет значение второго столбца, $3для третьего и т. д. и один специальный NFпредставляет идентификатор последнего столбца и, соответственно, $NFявляется значением последнего столбца (, поэтому вы также можете заменить $2выше на $NF; и да, вы улавливаете это, когда NFявляется последним идентификатором столбца, поэтому значение переменной говорит вам, сколько столбцов у вас есть (ее обновление значения для каждой строки awk читается из ввода)).

Чтобы обработать пограничный случай, когда входной файл пуст, но все же получить числовой вывод, мы добавляем 0 к результату, заставляя awkвыводить числовой результат.

столбцы (или поля )в awk, отличающиеся FSпеременной(F eild S разделителем ), по умолчанию используется пробел/табуляция. если вы хотите разделить столбцы на разные символы, вы можете переопределить их с помощью опции -Fдля awk, как в:

awk -F'<character-here>' '...' infile

или внутри блока BEGIN{...}, аналогичноFS:

awk 'BEGIN{ FS="<character-here>"; }; {... }' infile

например, для входного файла, как показано ниже (теперь это запятая вместо пробела):

100,500
200,300
700,100

вы можете написать свой awkкод следующим образом:

awk -F',' '{ sum_A +=$1; sum_B+=$2; };
END{ print "Total count Column A = " sum_A +0;
     print "Total count column B = " sum_B +0;
}' infile

Или внутри блока BEGIN:

awk 'BEGIN{ FS=","; }; { sum_A +=$1; sum_B+=$2; };
END{ print "Total count Column A = " sum_A +0;
     print "Total count column B = " sum_B +0;
}' infile

Немного усложним и просуммируем все N столбцов входного файла в следующем образце:

100,500,140,400
200,300,640,200
700,100,400,130

Итак, мы говорили о NFв первом абзаце (Значение NF говорит вам, сколько столбцов у вас есть (обновление для каждой строки)):

awk -F',' '{ for (i=1; i<=NF; i++) sum[i]+=$i; };
END{ for (colId in sum) { 
         printf ("Total count Column: %d= %d\n", colId, sum[colId] );
     };
}' infile

единственная новая вещь здесь заключается в том, что мы использовали массив awkдля обращения к тому же идентификатору столбца, взяв значение iи добавив их значения $iв этот массив (индекс/ключи этого массива - это столбец идентификаторы ); затем в блоке END{...}мы перебираем наш массив по ключам, которые он видел, затем сначала печатаем идентификатор столбца, а затем сумму тех, что рядом с ним,вы увидите вывод, как показано ниже:

Total count Column: 1= 1000
Total count Column: 2= 900
Total count Column: 3= 1180
Total count Column: 4= 730
5
18.03.2021, 22:40

Это хорошая работа для округа Колумбия.

dc считывает сначала данные из fold.txt и после кода из sum _col _dc.

Использовать так :dc fold.txt sum _col _dc

cat sum_col_dc  

[lB+sBlA+sAz0<C]sC[lGLElDnnnp]sH[Total count Column ]sD[B]sE[A]SE[ = ]sGlCxlAlHxlBlHx  

Немного подробнее:

[lB+sBlA+sAz0<C]sC  
[lGLElDnnnp]sH  
[Total count Column ]sD  
[B]sE  
[A]SE  
[ = ]sG  
lCx  
lA  
lHx  
lB  
lHx  

Наслаждайтесь DC
Подробнее объясните по запросу.

0
18.03.2021, 22:40

Теги

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