Заменить данные на определенный символ, затем изменить значение после x строк

Как сказал Адафон, вы просто посмотрели не на ту строку. Все остальное должно быть в порядке.

Вы хотите различать по классам, поэтому давайте посмотрим на ваш xprop:

WM_CLASS(STRING) = "keepassx", "Keepassx"

Эта строка определяется как:

WM_CLASS(STRING) = instance, class

Как видите, вы хотели плавающий keepassx, но класс - Keepassx

Есть два решения:

  1. Используйте for_window [class="Keepassx"] floating enable, так как это ссылается на правильное имя класса.

  2. Используйте for_window [class="(?i)keepassx"] floating enable, что означает, что искомая строка будет чувствительна к регистру без учета регистра.

Имейте в виду, что вы также можете использовать for_window с другими атрибутами, такими как name, instance и т.д.

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

1
07.03.2017, 02:58
3 ответа

Если вам действительно нужно изменить позицию определенного символа в awk , тогда вы можете установить пустое поле разделитель полей:

awk 'BEGIN{FS=""; OFS=FS} {$23 = int(FNR / 58) + 1 ; print}' file

OTOH, если вы действительно хотите изменить пятое разделенное пробелами поле , вы можете просто использовать разделитель по умолчанию

awk '{$5 = int(FNR / 58) + 1 ; print}' file
1
27.01.2020, 23:46
perl -lpe 's/^.{22}\K0/$. % 58 ? $a||0 : $a++/e'  yourfile

Кратко:

Пропустите первые 22 символа и оставьте их в стороне от появления в сопоставлении из-за \K, а 23-й символ наверняка является 0 согласно вашей спецификации. Номер строки $. % 58 сообщит нам, нужно ли нам удерживать счетчик или увеличивать его.

0
27.01.2020, 23:46

Чтобы заменить только 0 в 23-й колонке (или в вашем примере 5-й колонке), вам нужно что-то вроде этого:

sed -e "s/^\(\(\S\S*\s\s*\)\{4\}\)0 /\1$i/" file.txt > newfile.txt

Но это замечание просто для улучшения ваших знаний sed. Замена с увеличением переменных не является типичной работой sed. Это возможно, но не практично. Вы можете смешать sed со сценарием оболочки, но, возможно, вам лучше использовать язык сценариев по вашему выбору, такой как python или perl.

0
27.01.2020, 23:46

Теги

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