Похоже, что если Alt_R не назначен никакому другому модификатору, по умолчанию используется Mod1Mask.
Простого отключения правого alt в моем Xmodmap было недостаточно, чтобы заставить его перестать сообщать о состоянии 0x8, мне пришлось привязать его к другому модификатору (я выбрал Mod3, поскольку он все равно был пуст), а затем xev начал сообщать о состоянии 0x20 .
Хотя это скорее обходной путь, чем решение.
Если у вас достаточно свежая версия GNU awk (gawk
), вы можете
awk -i inplace -F'/' '$7 == "_f" {print > "otherfile"; next} 1' file
Если ваш awk не поддерживает параметр -i inplace
, вы можете сделать то же самое, но перенаправить вывод во временный файл, а затем переименовать его.
Как насчет этого предложения? Это менее краткое предложение, чем ответ @steeldriver , тем не менее, это прогрессивное решение (шаг за шагом ).
$ cut -d/ -f7 data.txt | grep -n _f | cut -d: -f 1 | xargs -i sed -n {}p data.txt > otherfile.txt
_f
— шаблон, созданный при сопоставлении с другим файлом.
data.txt
ваш файл
/
ваш разделитель
Если это сработало, выполните comm
, чтобы выяснить, что должно остаться в исходном файле.
$ comm -23 data.txt otherfile.txt > remainder.txt
rest.txt — это ваш data.txt с удаленными битами.
Регулярное выражение не может быть указано с опцией -F
относительно grep
. Есть еще одна проблема, связанная с регулярным выражением. Если символ ^
используется в качестве привязки к началу строки, он должен быть первым символом регулярного выражения.
prompt% cp -v input input.back
prompt% grep -e "$regex" input.back > output
prompt% grep -v "$regex" input.back > input
Регулярное выражение:Оригинальный постер не предоставил конкретных входных данных, поэтому трудно найти подходящее регулярное выражение.
Редактировать :, наконец, исходный постер предоставил образец входного файла.
Apple/One-plus/Samsung/Mi/Sony/_Nokia/
Apple/One-plus/Samsung/Mi/Lenovo/_Nokia/
Apple/One-plus/Samsung/Mi/HTC/OPPO/
Регулярное выражение:regex
regex='\([-[:alpha:]]\+\/\)\{5\}_Nokia\/'
Подобные решения не рекомендуются новичкам, которые никогда не читали руководство по sed.
sed -n "/$regex/p;/$regex/d;w input" input.back > output
Грубо говоря,строки, соответствующие регулярному выражению, сохраняются в файле output
, затем удаляются из соответствующего sed-буфера, а содержимое буфера записывается в файл input
.
sed -i.back -e "/$regex/w output" -e "/$regex/d" input
Эти команды имеют небольшие различия, но вторая более удобна.