Необходимо заменить переменную ЛЕНГА в текущей оболочке.
Поместить
export LANG=en_US.UTF-8
в Вашем файле дистанционного управления оболочки (для удара это ~/.bashrc
) и перезапустите терминальный сеанс (или просто получите емкостно-резистивный файл еще раз с source ~/.bashrc
или даже просто перезапуск колотит с exec bash
)
Обратите внимание на то, что необходимо генерировать эту локаль прежде.
Также можно использовать export LANG=C
.
Также существуют другие переменные ЛЕНГА (от удара человека):
LANG Used to determine the locale category for any category not
specifically selected with a variable starting with LC_.
LC_ALL This variable overrides the value of LANG and any other LC_
variable specifying a locale category.
LC_COLLATE
This variable determines the collation order used when sorting
the results of pathname expansion, and determines the behavior
of range expressions, equivalence classes, and collating
sequences within pathname expansion and pattern matching.
LC_CTYPE
This variable determines the interpretation of characters and
the behavior of character classes within pathname expansion and
pattern matching.
LC_MESSAGES
This variable determines the locale used to translate double-
quoted strings preceded by a $.
LC_NUMERIC
This variable determines the locale category used for number
formatting.
Если я правильно понимаю, вы ищете
perl -lane 'push @{$k{$F[0]}},$F[1];
END{$"=", ";print "$_ @{$k{$_}}" for sort keys(%k)}' file
Нет причин явно разделять линию, флаг -a
уже делает это для вас. Каждая входная строка будет разделена на массив @ F
. Итак, здесь мы создадим хэш % k
, чьи ключи являются 1-м полем и чьи значения являются соответствующими списками 2-го поля. Затем в конце отсортируем хэш-ключи, установим разделитель списка ( $ "
) на , [космос]
и распечатаем каждый ключ и соответствующий ему список значений.
Для запуска программы она должна находиться в оперативной памяти. Во время обработки все программы заменяются из ОЗУ, а затем их необходимо повторно заменить перед запуском.
Кроме того, для многих (но не для всех) входных событий между вашим X11 сервером и вашим оконным менеджером должен быть переход в оба конца, и оконный менеджер может попытаться инициировать дополнительные события. И так как у вас нет оперативной памяти, если оконный менеджер записывает в канал или сокет, это должно быть заблокировано до тех пор, пока принимающий процесс не прочитает из него.
-121--75843- Если известно, что src:
находится в начале строки и что foo
заключено в кавычки и ему предшествует космос и что в строке должна быть двоеточие, Используйте
awk 'BEGIN{a=0} /^$/{if(a==1) print b; a=0} /:.* "foo"/{a=1} /^src:/{b=$0} END{if(a==1) print b}'
переменную a
, чтобы запомнить, возникает ли образец foo
во входном блоке, и переменную b
, чтобы сохранить строку src:
. В начале a
имеет значение 0. Всякий раз, когда мы находим пустую строку (т.е. ^ $
), мы проверяем значение a
, условно печатаем b
и сбрасываем a
. Если мы сталкиваемся с «foo»
, которому предшествует двоеточие ранее в строке, мы задаем a
равным 1. Если мы сталкиваемся с src:
в начале строки ( ^
), мы сохраняем ее в b
. В конце еще раз проверим, нет ли a = 1
, если да, то напечатаем b
.
Easy awk
awk '/src/{a=$0}/foo/{b=1}b&&a{print a;exit}'
Если src
или foo
может быть где-то в другом формате или что-то в этом роде
awk '/^src/{a=$0}/"foo"/{b=1}b&&a{print a;exit}'
Если foo всегда идет после src
awk '/^src/{a=$0}/"foo"/{print a;exit}'
Если в файле есть несколько блоков src, и вы хотите распечатать каждый из них, который содержит foo
awk '/^src/{a=$0;b=0}/"foo"/{b=1}b&&a{print a;a=0}'