Eu sou novo em programação !!
Alguém pode ajudar a remover :
a primeira posição em um carimbo de data / hora::29.06.2019 23:03:17
Atualmente, estou tentando fazer isso usando os comandos awk / cut, como mostrado abaixo:
TDS="$(grep 'Logfile started' process.log | awk '{print $3,$4}' | cut -d: -f2)"
echo "$TDS"
29.06.2019 23
E a saída não é o que eu queria! Quero imprimi-lo como 29.06.2019 23:03:17
.
fonte
Aqui está uma
sed
solução:O que o comando
sed 's/^://'
está fazendo é substituirs
o caractere de dois pontos:
do início^
de cada linha pela string vazia//
.Aqui está uma
awk
solução complicada , na qual alteramos o separador de campos para^:
, descrito acima, e produzimos o segundo campo (de cada linha):A tarefa poderia ser realizada também com
grep
( explicação ), provavelmente esta poderia ser a solução mais rápida para grande quantidade de dados:Ou processe o arquivo diretamente pelo seguinte comando, onde a limitação
^
é removida:O acima pode ser alcançado também por
sed
grupos de captura e()->\1
:Onde a expressão
^.*<something>.*$
corresponderá à linha inteira, que contém<something>
. O comandos/old/new/
substituirá essa linha pelo conteúdo do primeiro grupo de captura (a expressão entre colchetes pode ser mais concreta). A opção-r
ativa as expressões regulares estendidas. A opção-n
suprimirá a saída normal desed
e, finalmente, o comandop
imprimirá as correspondências.fonte
awk
poderia ter um FS multi-personagem com personagens com significado especial! Coisa que aprendi hoje.Como você já está processando isso
awk
, você também pode fazer a coisa toda diretamente:O
sub
formato geral do comando ésub(/REGEX/, REPLACEMENT, TARGET)
e substituirá todas as correspondências da expressão regularREGEX
pela sequênciaREPLACEMENT
na sequência de entradaTARGET
. Aqui, estamos substituindo o primeiro:
(^
significa "o começo") do terceiro campo ($3
) por nada.Obviamente, se você estiver fazendo isso no awk, poderá fazer tudo no awk e fazer tudo em uma única operação:
Ou, no seu caso:
fonte
Outra solução do bash:
xargs
convertestdin
(entrada padrão) em parâmetros posicionais para obash
comando.echo
portail -n1 /path/to/reportfile.txt
.fonte