Использование grep для перечисления определенных строк из файла

Сохраните pid запущенного процесса и сохраните его в файл. Перед созданием нового экземпляра убедитесь, что старый закончился. В противном случае убейте его.

echo "Starting a new A instance"
nohup /tmp/a.sh &
echo "Writing A pid to file"
echo $! > /tmp/a_pid

Затем вы можете проверить время и убить скрипт следующим образом:

if [ -f /tmp/a_pid ]; then
    echo "Trying to stop previous instance of proces A"
    kill $(cat /tmp/a_pid) || true
    echo "Removing A pid file"
    rm /tmp/a_pid
fi
1
09.01.2015, 02:26
2 ответа
grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor

grep -E использует egrep

'(a | b)' ищет шаблон a или шаблон b

^ - начало строки, $ - конец строки

[ [: alpha:]] {5} означает 5 последовательных букв

[^ [: alpha:]] означает не-а -letter

Итак, мы используем egrep для поиска:

  • начала строки, 5 букв, затем не буквы; или
  • небуквенный, 5 букв, затем конец строки
0
29.04.2021, 00:33

Это немного зависит от того, что вы подразумеваете под словом , но что-то вроде

grep -E '^[[:alnum:]]{5}\b'

(пять буквенно-цифровых символов, за которыми следует граница слова, привязанная к началу строка) или, если ваша версия grep поддерживает Perl-совместимые регулярные выражения (PCRE)

grep -P '^\w{5}\b' 

(пять символов слова , за которыми следует граница слова, привязанная к началу строки). Для конца строки эквивалентами будут что-то вроде

grep -E '\b[[:alnum:]]{5}$' file

или

grep -P '\b\w{5}$' 

. Обратите внимание, что для конкретного файла, который вы упоминаете, большинство строк начинаются с ведущего пробела: если вы хотите игнорировать это, вам потребуется сделать что-то вроде grep -E '^ [[: space:]] * [[: alnum:]] {5} \ b' или его эквивалент PCRE grep -P '^ \ s * \ w {5} \ b '.

0
29.04.2021, 00:33

Теги

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