awk: Чтобы подсчитать повторение и номер в увеличенном порядке

Предоставление доступа sudo не должно приравниваться к:

передаче ключей королевства.

Только не будьте столь щедры с вашими разрешениями sudoers . Если вы хотите, чтобы у них был доступ только для чтения файла, предоставьте только sudo доступ к кот .

Также будьте осторожны при предоставлении доступа sudo таким приложениям, как vim или less , которые позволяют вам войти в оболочку (как root).

-1
17.11.2018, 01:56
2 ответа

Вы можете использовать функцию awk gensub, чтобы удалить нецифру [^0-9]из 3-го поля:

awk -v c=1 '{$(NF+1)="tss"((gensub("[^0-9]","","g",$3)==$4)?c:++c)}1' OFS='\t' file

При этом создается новый столбец $(NF+1), представляющий собой строку tssсо счетным числом cна основе сравнения 3-го и 4-го столбцов. Это использует тернарный оператор ...?...:..., который эквивалентен if...then...else.
Последнее 1— это действие awk по умолчанию, то есть печать строки.

0
28.01.2020, 05:12

Подобный awkскрипт должен работать:

NR == 1 { print }
NR > 1 {
  if( $3 == last ) {
    count++
  } else {
    count = 1
  }
  last = $3
  print $1, $2, $3, $4, "tts" count
}

OFSпо умолчанию является вкладкой, и ввод, разделенный вкладкой -, также работает с вкладками. Итак, с этим awk-скриптом вscript.awk:

$ awk -f script.awk inputfile
0
28.01.2020, 05:12

Теги

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