Сортировать с -k больше, чем количество ключей

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

#!/bin/bash
scripts=$(cat scriptfiles.txt)
declare -i NUM=0
declare -i MAX_PROCS=30
for script in "$scripts"
do
  NUM=$((NUM+1))
  ssh remote.host.ip "${script}" > ${script}.log 2>&1 &
  if [ $NUM -ge $MAX_PROCS ];then
    echo "Waiting for $NUM processes to finish."
    wait
    NUM=0
  fi
done
echo "Waiting for final $NUM processes to finish."
wait
exit

Это грубая сила, но эффективная. К тому же вам не нужно добавлять в систему дополнительное программное обеспечение типа parallel.

Большой проблемой является то, что команда wait будет ждать завершения самого медленного сценария, что может привести к потере времени. Я создал сценарии для решения этой проблемы, но, как вы можете себе представить, они становятся более сложными. Если все ваши сценарии выполняются примерно за одинаковое время, это работает хорошо.

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

Конечно, количество ssh-соединений может стать громоздким. В этом случае просто переместите этот сценарий на удаленный хост и измените строку "ssh...", чтобы просто запускать сценарии напрямую.

0
18.10.2018, 19:59
2 ответа
 sed -En 'h;:a;s/^(.)\1+//;ta;/^$/{x;p}' file

с комментариями

sed -E -n '
    h            # store a copy of the line
    :a           # set label "a"
    s/^(.)\1+//  # from the start of the line, remove sequences of 2 or more repeated chars
    ta           # *if the pattern matched* jump to "a"
    /^$/ {       # if empty string:
        x        #   retrieve the original line
        p        #   and print it
    }
' file
3
28.01.2020, 02:16

Одним из способов, использующих Gnu sed, может быть:

sed -Ee '/^((.)\2+)+$/!d'  input.txt
2
28.01.2020, 02:16

Теги

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