Как только заменить строками, которые соответствуют нескольким шаблонам в sed?

Можно получить состояния процесса с coreutils ps

$ ps aux

перечислит все это, и т.д. Вот то, как можно декодировать их из страницы справочника:

ОБРАБОТАЙТЕ КОДЫ СОСТОЯНИЯ

Вот различные значения, что s, статистика и указывают, что выходные спецификаторы (заголовок "СТАТИСТИКА" или "S") отобразятся для описания состояния процесса:

   D    uninterruptible sleep (usually IO)
   R    running or runnable (on run queue)
   S    interruptible sleep (waiting for an event to complete)
   T    stopped, either by a job control signal or because it is being traced.
   W    paging (not valid since the 2.6.xx kernel)
   X    dead (should never be seen)
   Z    defunct ("zombie") process, terminated but not reaped by its parent.

Для форматов BSD и когда ключевое слово статистики используется, могут быть отображены дополнительные символы:

   <    high-priority (not nice to other users)
   N    low-priority (nice to other users)
   L    has pages locked into memory (for real-time and custom IO)
   s    is a session leader
   l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
   +    is in the foreground process group.
8
15.05.2013, 20:06
2 ответа

Если CH должен произойти в начале строки, порядка CH и au фиксируется, таким образом, можно искать ^CH.*au.

$ echo -e 'CH12\nCH23au' | sed '/^CH.*au/s=^=<b>='
CH12
<b>CH23au
$

Если порядок этих двух шаблонов не фиксируется, можно было бы сделать что-то как

sed -e '/pattern1/{;/pattern2/s/old/new/;}'

но решение для жемчуга

perl -pe 'if (/pattern1/ && /pattern2/) {s/old/new/;}'

вероятно, более читаемо.

8
27.01.2020, 20:11

Другой подход:

sed -e '/^CH/!b' -e '/au/!b' -e 's/^/<b>/'

b (перейдите в конец, если не, учитывая любой аргумент маркировки), похож continue или next на других языках. Таким образом, вышеупомянутое похоже:

for (; line = readline(); print line) { # The implicit loop in sed
  if (!/^CH/) continue;
  if (!/au/) continue;
  line =~ s/^/<b>/
}
5
27.01.2020, 20:11

Теги

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