Скопируйте первое слово имени файла

«Однострочный», разделенный на две строки для уменьшения прокрутки:

ps aux | awk -v cutoff=$(( $(date +%s) - 20 * 60 ))  \
  '/resque.*Forked [0-9]+ at [0-9]+/ { if ($NF < cutoff) system("kill " $2) }'

Его можно было бы сделать более жестким, используя спецификатор вывода для ps, чтобы ограничить вывод только полями PID, COMM и ARG, а затем специально сопоставить COMM и ARGS, но риск ложноположительного совпадения кажется низким. мне, вот.

0
02.06.2017, 00:13
4 ответа

Вместо использования внешних инструментов, таких как sed, cut или awk, вы можете просто использовать встроенную переменную оболочки расширение, которое вы уже использовали для удаления расширения:

echo -n ${title%% *}

Использование двойного %% означает удаление самого длинного совпадения, поэтому вы удаляете все из переменной, начиная с первого пробела.

1
28.01.2020, 02:16

Вы всегда можете положиться на любой инструмент для обработки текста. Произнесите sed, например:

$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John
1
28.01.2020, 02:16

Вот, пожалуйста, title=$(echo $zBase|awk {'print $1'})

В awk $1 дает первое слово, $2 второе слово и так далее.

1
28.01.2020, 02:16
title=$(echo $title | cut -d" " -f1)

Добавьте это перед эхом. Он вырезает имя на каждом месте и занимает первую часть -> Что вы хотели сделать

2
28.01.2020, 02:16

Теги

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