Следуя философии Unix, у вас есть инструмент, который перечисляет процессы, использующие данный графический процессор, и инструмент, который уничтожает процессы. Комбинируйте их, используя конструкции оболочки и инструменты обработки текста.
Например, чтобы убить все процессы, использующие GPU 2, вы можете выполнить следующую команду:
kill $(nvidia-smi | awk '$2=="Processes:" {p=1} p && $2 == 2 && $3 > 0 {print $3}')
или
kill $(nvidia-smi -g 2 | awk '$2=="Processes:" {p=1} p && $3 > 0 {print $3}')
sed
может использовать почти любой символ в качестве разделителя для своего выражения, я считаю, что лучше не использовать разделитель, который находится в строке, которую вы пытаетесь заменить, чтобы ограничить ошибки экранирования.
sed -e 's!/p>!/h3\>!g' new_exp_dev02.xml
заменит /p>
на /h3>
. Амперсанд(&
)в замене необходимо экранировать, так как этот символ имеет особое значение в выражениях замены sed
.
Ваше опубликованное выражение sed
очень трудно прочитать, и я не уверен, чего вы пытаетесь достичь с его помощью, но, похоже, у него другая цель, чем «заменить часть /p>
на /h3>
».
РЕДАКТИРОВАТЬ :если вам нужно написать выражение в такой длинной форме, это должно работать:
sed -e 's!\(<h3>Styled here with:.*\)/p>!\1/h3\>!g' new_exp_dev02.xml
Это помещает всю совпавшую часть кроме /p>
в обратную ссылку, которую мы можем использовать в секции замены как \1
. Вы не можете использовать регулярное выражение на стороне замены sed
, так как регулярные выражения используются только для сопоставления.
Первое выражение в этом ответе заменит все вхождения /p>
на /h3>
, второе выражение заменит /p>
, только если оно встречается сразу после сопоставления с регулярным выражением"<h3>Styled here with:.*"
Вы можете попробовать команду perl ниже
perl -pne "s/p>/h3>/g" filename
выход
<h3>Styled here with: <a href="$url('Product-Show','pid','107723102')$">FRS blo</a>, <a href="$url('Product-Show','pid','000482512')$">Os Cutes</a>&nbsp;and <a href="$url('Product-Show','pid','000312901')$">Dor Sho</a></h3></short-description>