Я нашел ответ, а именно: выполнение:
sudo setxkbmap -layout ara
меняет мою клавиатуру на арабскую. Аналогично выполнение:
sudo setxkbmap -layout us
переключает ее обратно на английскую клавиатуру США. Другие раскладки можно найти в /usr/share/X11/xkb/symbols/
.
Использование python3
, при условии, что столбец 7 существует во всех строках файла :
python3 -c "[print(l.split('|')[6][0]) for l in open('f').readlines()]"
> 2
Где 'f'
- (полный) путь к файлу в одинарных кавычках.
open('f').readlines()
будет читать файл в каждой строке , а
s.split('|')[6][0]
разделит строку разделителем |
, а затем напечатает первый символ 7-го столбца ( где 0 - индекс первого столбца)
IFS='|' read -r -a x <<< "$str"
echo "${x[7]:0:1}"
read
использует содержимое $ str и разбивает его на ] pipe |
char и помещает их в массив ( -a
) с именем x. Затем извлекаем один символ из начала 7-го поля.
perl -F'\|' -pale '($_) = $F[6] =~ /./g' <<< "$str"
-F
=> разделитель полей, -p
=> режим автопечати, -a
=> автоматическое разделение включено, -l
=> настройте разделитель записей ( RS
) на \ n
и ORS
на \ n
.
7-е поле $ F [6]
оценивается в контексте списка и как /./ g
и возвращает отдельные символы, из которых первый выбирается и сохраняется в $ _
, который из-за автопечати
перенесет его в стандартный вывод
.
sep='|'
fld="[^$sep]*"
fld7=$(yes "$fld$sep" | sed 7q | tr -d '\n')
expr "$str" : "$fld7\(.\)"
Здесь мы создаем команду так, чтобы expr
выполняла свою работу под капотом
.
echo "$ fld"; # => [^ |] *
echo "$ fld7"; # => [^ |] * [^ |] *
.... 7 раз
Вы также можете использовать cut:
cut -d\| -f7 | cut -c1
Для изучения интересного поведения sed
sed 's/\(\([^|]\?\)[^|]*|\)\{7\}.*/\2/' input.file.txt
или для уменьшения экранирования
sed -r 's/(([^|]?)[^|]*\|){7}.*/\2/' input.file.txt
или для избежания regex
sed '/\n/{s/./\n/2;P;d;};s/|/\n/6;s/$/\n/;D' input.file.txt
Это выполнит свою работу:
awk -F "|" '{print(substr($7,1,1))}' input.file.txt