Редактировать файл интерфейсов в C ++

Используйте это:

awk -v alt="$ALTER" -v name="$NAME" '
   $2 ~ /-/ && $2 >= alt && $3 ~ name{print $1}' file
  • $2 ~ /-/: проверяет, что число дней включено.
  • $2 >= alt: проверяет, что количество дней в etime больше, чем $ALTER.
  • $3 ~ name: ищет значение name ($NAME) в 3-м поле.

Другое чистое bash решение:

ps -eo pid,etime,comm | while read p e n; do
  if [[ $n =~ $NAME ]] && [[ $e =~ \- ]] && [ "${e%%-*}" -gt "$ALTER" ]; then 
    echo $p
  fi
done
  • while read p e n сохраняет pid, etime и имя команды в переменных $p, $e и $n.
    • [[ $n =~ $NAME ]]: проверяет, есть ли в команде $NAME
    • [[ $e =~ \- ]]: проверяет, есть ли в etime тире (-) (означает, что процесс длится больше суток)
    • [ "${e%%-*}" -ge "$ALTER" ]: проверяет, больше или равен ли счетчик дней в etime значению в $ALTER
  • Если все вышеперечисленное выполнено, выведите pid: echo $p
2
11.05.2018, 14:53
1 ответ

Esta no es la respuesta deseada, pero dependiendo de qué tan bueno sea con las expresiones regulares, no debe descuidar la lectura del archivo completo y hacer una búsqueda y sustitución de patrones. Supongo que C ++ proporciona una biblioteca de expresiones regulares adecuada.

Una ventaja es que puede desarrollar y probar la expresión regular fuera de su aplicación, por ejemplo, en este sitio web de prueba de expresiones regulares donde he puesto un archivo simple, un patrón y una sustitución con los que puede jugar.

Por supuesto, una expresión regular puede ser más difícil de leer que el código C++ que ya tiene, pero es un lenguaje muy poderoso y se puede hacer más legible usando una versión que permita comentarios en línea o construyéndola. de varias partes de la cuerda.

1
27.01.2020, 22:18

Теги

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