Как-то я создал недетерминированный sh-скрипт

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

В приложениях запуска

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"
1
задан 9 January 2016 в 20:39

2 ответа

sed -r "s/(.*)([[:space:]][[:digit:]]*.*)$/\2\1/" Top10 | sed -r "s/([[:space:]])([[:digit:]])/\2/" | sed -r "s/([[:digit:]])([[:alpha:]])/\1 \2/" > Top10

заставляет файл сначала перезаписываться с помощью > Top10 и только затем обрабатываться sed (в этот момент файл пуст)

2
ответ дан 23 May 2018 в 14:25

Нет причин запускать 6 команд sed, если вы можете сделать это в одном:

sed -ri 's/^[^0-9]*$//; s/(.*)/\L\1/; y/[aeiou]/[AEIOU]/; s/(.*)([[:space:]])([[:digit:]]*.*)$/\3 \1/' Top10

Обратите внимание, в частности, как второй канал команд sed можно объединить в одно выражение, если вы просто сгруппировали свои матчи по-разному. Так как вы все равно хотите отбросить ведущие пробелы, а затем добавить пробел после версии, вы можете сделать это в самом исходном совпадении, группируя ведущее пространство и версию отдельно.

2
ответ дан 23 May 2018 в 14:25

Другие вопросы по тегам:

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