У меня есть текстовый файл (file.txt), имеющий содержимое что-то вроде:

foo1 3464 
foo2 3696 
foo3 4562 

Он содержит процесс и соответствующий PID.

Используя сценарий оболочки, я хочу добавить строку (работает / не работает) к этим строкам в этом файле, в соответствии с PID.

Например, в приведенном выше файле для строки, содержащей PID 3696, я хочу добавить строку "выполняется" в конце, чтобы файл стал:

foo1 3464 
foo2 3696 running
foo3 4562 

Как мне это сделать?

1 ответ1

3

С помощью perl , фактически проверяя, запущен ли процесс (только для Linux):

perl -ape '$pid = $F[1]; if (-d "/proc/$pid") {s/$/ running/}'

С помощью sed:

sed -i '/\<3696\>/ s/$/ running/' "$file"

С perl:

perl -i -pe 's/$/ running/ if /\b3696\b/' "$file"

perl -i -ape 's/$/ running/ if $F[1] eq "3696"' "$file"

С ed:

ed "$file" <<-EOF
/\<3696\>/ s/$/ running/
wq
EOF

(Здесь \< \> (sed) и \b \b (perl) означают границы слов - оба примера соответствуют только "3696", но не "136960" или тому подобное.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .