Извлечь один или несколько шаблонов из строки

Как отмечали некоторые другие, переменная среды TZ - это то, что влияет на вывод date . Однако в большинстве случаев вы не захотите оставить TZ измененным; вы просто хотите видеть время в этом часовом поясе, не затрагивая впоследствии вашу среду.

Для этой цели лучше всего использовать env . Из справочной страницы env :

NAME
    env - run a program in a modified environment
SYNOPSIS
    env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

Итак, в этом случае желаемая команда будет выглядеть примерно так:

env TZ='EST' date

Существуют и другие форматы, приемлемые для часового пояса - многие из них. Если у вас есть особые требования, рекомендуется прочитать man timezone , в котором объясняются допустимые форматы часовых поясов.

0
19.02.2018, 18:06
2 ответа

Creo que quieres una expresión regular como grep. Algo así como grep 'VAR\("[A-z0-9]*"\)'Sin embargo, no funcionará en su caso con todos esos \"s. Tal vez algo similargrep '(^VAR(\")[A-z0-9](^\"))' | grep 'VAR\(\\"[A-z0-9]*\\"\)'

Tampoco he estado usando grep por mucho tiempo.:)

0
28.01.2020, 02:32

Si tiene un grepcompatible con Perl Expresión regular (PCRE ), entonces puede usar

grep -Po 'VAR\(\\"\K[^\\]*'

o (de manera más simétrica -usando mirar hacia atrás y mirar hacia adelante)

grep -Po '(?<=VAR\(\\").*?(?=\\")'

Ej.

$ grep -Po 'VAR\(\\"\K[^\\]*'
function( "((2 * VAR(\"xxx\")) - VAR(\"yyy\"))" ?name "name" ?plot t ?save t ?evalType 'point)
function("value(res VAR(\"zzz\"))" ?name "othername" ?plot t ?save t ?evalType 'point)
xxx
yyy
zzz

Ej.

$ grep -Po '(?<=VAR\(\\").*?(?=\\")'
function( "((2 * VAR(\"xxx\")) - VAR(\"yyy\"))" ?name "name" ?plot t ?save t ?evalType 'point)
function("value(res VAR(\"zzz\"))" ?name "othername" ?plot t ?save t ?evalType 'point)
xxx
yyy
zzz
2
28.01.2020, 02:32

Теги

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