Estoy tratando de hacer lo mismo
Pude agregar un diseño personalizado a /usr/share/X11/xkb/symbols
seguido de chattr -i dvg
para evitar sobreescrituras. Luego modifiqué~/home/gordon/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<channel name="keyboard-layout" version="1.0">
<property name="Default" type="empty">
<property name="XkbDisable" type="bool" value="false"/>
<property name="XkbOptions" type="empty">
<property name="Group" type="string" value=""/>
<property name="Compose" type="string" value=""/>
</property>
<property name="XkbLayout" type="string" value="dvg"/>
<!-- <property name="XkbVariant" type="string" value="dvp"/> -->
<property name="XkbModel" type="string" value="asus_laptop"/>
</property>
</channel>
Todavía no sé cómo se vuelve a llenar la lista de diseños de teclado -en el administrador de configuración. No parece verse afectado por los cambios en/usr/share/X11/xkb/symbols
awk 'substr($1,2)==substr($3,2) { print $0 > "file1" } substr($1,2) != substr($3,2) { print $0 > "file2" }' masterfile
С мастер-файлом, содержащим исходные данные, и с использованием функции substr awk, мы игнорируем первую букву первого и третьего полей, разделенных пробелами, оставляя нам числа для сравнения. Затем мы выполняем условные проверки этих номеров, помещая их в определенные файлы (file1 и file2 )соответственно.
Использование awk
создаст два файла; Те строки, в которых числовые части столбцов 1 st и 3 rd были одинаковыми, будут помещены в отдельный файл, а те строки, в которых эти столбцы различались, — в другой файл.
awk -F"[A B]" '{
print >(($2==$5)?"matches.txt":"non_matches.txt")
}' infile.txt
Это установит разделитель полей awk в наборы символов A
, B
или пробела, затем сравните, если числовые части были одинаковыми, тогда текущая строка будет записана в файл «matches.txt», иначе она будет записана в файл "не _match.txt".
perl -alMFatal=open -pe '
BEGIN{ unlink, open *{+uc}, ">>$_" for qw/file1.log file2.log/; }
select $F[0] =~ s/^\D*//r eq $F[2] =~ s/^\D*//r ? *{"FILE1.LOG"} : *{"FILE2.LOG"};
' sample.txt
Perl
опции :-a
разделит строку на поля на основе пробелов, и эти поля доступны через$F[0] $F[1]...
-l
установит RS
на новую строку и ORS
на новую строку. -M
загрузит модуль Fatal.pm
и включит функцию open
из своего пространства имен. Это означает, что любые ошибки при открытии файла в основном коде должны умереть. -p
будет читать строку файла sample.txt -за строкой -, а автоматическая -печать строк будет включена после применения к ней всех преобразований. BEGIN
должен удалить все существующие файлы file1.log и file2.log и открыть дескрипторы файлов в режиме append
для файлов. select
выбирает дескриптор файла для печати текущей строки. $F[0] =~ s/^\D*//r
удалит все начальные нецифры в первом поле (это предполагает, что все цифры помещены в конец поля ). -p
. OTW, дескриптор файла *FILE2.LOG делается дескриптором по умолчанию, а опция -p
заставляет Perl
печатать здесь текущую строку. Мы можем сделать то же самое, используя sed
инструмент, как показано:(Предполагая, что GNU sed)
sed -Ee '
h;s/\S+/\n&\n/3
/^[^0-9[:blank:]]*([0-9]+).*\n(.*[^0-9])?\1\n/{
g
s/^//w file1.log
d
}
g
' < sample.txt > file2.log