Распечатайте строку в stdout, который соответствует выражению, если вывод содержит другое выражение

Необходимо заменить переменную ЛЕНГА в текущей оболочке.

Поместить

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.
2
13.04.2017, 15:36
2 ответа

Если я правильно понимаю, вы ищете

perl -lane 'push @{$k{$F[0]}},$F[1]; 
            END{$"=", ";print "$_ @{$k{$_}}" for sort keys(%k)}' file

Нет причин явно разделять линию, флаг -a уже делает это для вас. Каждая входная строка будет разделена на массив @ F . Итак, здесь мы создадим хэш % k , чьи ключи являются 1-м полем и чьи значения являются соответствующими списками 2-го поля. Затем в конце отсортируем хэш-ключи, установим разделитель списка ( $ ") на , [космос] и распечатаем каждый ключ и соответствующий ему список значений.

-121--154392-

Для запуска программы она должна находиться в оперативной памяти. Во время обработки все программы заменяются из ОЗУ, а затем их необходимо повторно заменить перед запуском.

Кроме того, для многих (но не для всех) входных событий между вашим 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 .

2
27.01.2020, 22:00

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}'
2
27.01.2020, 22:00

Теги

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