AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

    • Início
    • system&network
    • Ubuntu
    • Unix
    • DBA
    • Computer
    • Coding
    • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-186444

Christopher Karsten's questions

Martin Hope
Christopher Karsten
Asked: 2024-12-15 23:39:08 +0800 CST

imprima texto entre caracteres especiais na mesma linha e remova os espaços em branco iniciais e finais

  • 8

Estou tentando obter texto entre caracteres especiais. Você pode seguir o abaixo para entender o que estou tentando obter. Tenho os comandos necessários para fazer isso, no entanto, estou procurando uma maneira mais eficiente, caso certas condições possam mudar com base no resultado.

Abaixo tem o texto On-Line (Prim) por exemplo. Quero extrair qualquer texto entre "--" 1ª e 2ª ocorrência.

Então eu tenho o texto abaixo na variável "VAL1"

IBM Informix Dynamic Server Version 14.10.FC10XA -- On-Line (Prim) -- Up 77 days 23:08:31 -- 130337920 Kbytes

Então atualmente estou usando o seguinte:

echo "$VAL1" | awk -F'--' '$1 ~ /Version/ {print $2}'

O acima fornece a saída abaixo:

 On-Line (Prim)

No entanto, você não consegue ver que há necessariamente um espaço em branco no final da linha, mas o início é bem perceptível. Quero garantir que eu imprima apenas as palavras entre "--" que excluam quaisquer espaços em branco antes e depois da frase dentro de "--".

Então tentei usar o seguinte, que para mim parece estar bom:

echo "$VAL1" | awk -F'--' '$1 ~ /Version/ {print $2}' | sed 's/^ //g' | sed 's/ *$//'

Saída:

On-Line (Prim)

Gostaria de saber se existe uma maneira melhor e mais fácil de fazer isso que seja mais suficiente?

awk
  • 4 respostas
  • 279 Views
Martin Hope
Christopher Karsten
Asked: 2024-12-12 18:47:23 +0800 CST

Converter dados de colunas delimitadas por barras verticais em formato de tabela HTML para e-mail

  • 8

Estou tentando converter o formato de dados delimitado para saída de tabela de colunas HTML para impressão por e-mail e não tenho certeza de como usar o delimitador de barra vertical como separador para formatação tabular HTML.

Abaixo está o que eu poderia usar se um espaço fosse um separador, mas neste exemplo estou usando um pipeline (|).

awk ' BEGIN {
print "To: '[email protected]'"
#print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "Subject: This is a test email"
print "<html><body><table border=1 cellspacing=0 cellpadding=3>"
print "<tr>"
print "<td>SID</td>";
print "<td>PID</td>";
print "<td>Username</td>";
print "<td>Database</td>";
print "<td>Hostname</td>";
print "<td>Program</td>";
print "<td>Connected</td>";
print "<td>Idle Time</td>";
print "<td>Query Time</td>";
print "<td>EST COST</td>";
print "<td>SEQ SCAN</td>";
print "<td>Query</td>";
print "</tr>"
} {
print "<tr>"
print "<td>"$1"</td>";
print "<td>"$2"</td>";
print "<td>"$3"</td>";
print "<td>"$4"</td>";
print "<td>"$5"</td>";
print "<td>"$6"</td>";
print "<td>"$7"</td>";
print "<td>"$8"</td>";
print "<td>"$9"</td>";
print "<td>"$10"</td>";
print "<td>"$11"</td>";
print "<td>"$12"</td>";
print "</tr>"
} END {
print "</table></body></html>"
} ' /home/test/test.unl | sendmail -t

Dentro do arquivo test.unl está o seguinte:

15422216|-1|dwhvo|test|pd244zax.test.corp|N/A|    10:56:53|    -0:00:30|10:57:22|1045127|1|SELECT sba_sub_aux.sba_subscriber_id, sba_sub_aux.sba_id_number, sba_sub_aux.sba_matchcode, sba_sub_aux.sba_marketing, sba_su|

Gostaria de obter o seguinte em formato de tabela por e-mail.

insira a descrição da imagem aqui

awk
  • 4 respostas
  • 447 Views
Martin Hope
Christopher Karsten
Asked: 2022-12-30 12:07:46 +0800 CST

Como converter segundos para hh:mm:ss.ms ao obter diferença entre 2 vezes

  • 5

Eu realizei um cálculo que converte o timestamp atual dando milissegundos também usando o comando perl como abaixo:

perl -MTime::HiRes=time -MPOSIX=strftime -e '
$now = int(time() * 1000);
printf "%s.%03d\n", strftime("%H:%M:%S", localtime(int($now/1000))), ($now % 1000);'

Do exposto, desejo converter a saída em segundos, que posso obter usando abaixo, por exemplo:

echo "21:48:40.596" | awk -F: '{ if (NF == 1) {print $NF} else if (NF == 2) {print $1 * 60 + $2} else if (NF==3) {OFMT = "%2.3f"; print $1 * 3600 + $2 * 60 + $3 } }'

Com os comandos acima se eu comparar leituras em segundos separados, posso usar o comando abaixo para obter a diferença entre os 2 valores em segundos mantendo os miliconds:

EXEMPLO:

DIFF_SEC=$(echo "78522.896 - 78520.596" | bc -l | awk '{printf("%.3f\n", $1)}')

SAÍDA:

echo $DIFF_SEC
2.300

Gostaria de saber do exposto como posso calcular a diferença entre o comando acima em hh:mm:ss.milseconds

Eu consegui descobrir o seguinte, no entanto, os milissegundos não estão aparecendo:

DIFF=`printf '%02dh:%02dm:%02ds.%03d\n' $((DIFF_SEC/3600)) $((DIFF_SEC%3600/60)) $((DIFF_SEC%60))`

SAÍDA:

echo "$DIFF"
00h:00m:02s.000

O que eu espero está abaixo:

00h:00m:02s.300
awk
  • 3 respostas
  • 75 Views
Martin Hope
Christopher Karsten
Asked: 2022-11-17 10:47:48 +0800 CST

usando awk se para imprimir a linha inteira nos critérios da primeira coluna

  • 5

Eu tenho um arquivo chamado test_data.txt e dentro do arquivo está o seguinte:

20:20:20 test1
20:21:21 test2
20:21:49 test3
20:21:57 test4
20:21:57 test5
20:21:57 test6
20:22:57 test7
20:25:59 test8
20:25:59 test9
20:25:59 test10
20:25:59 test11
20:29:03 test12
20:29:04 test13
20:29:31 test14

A primeira coluna é o que eu quero pesquisar, por exemplo. A 1ª coluna apresenta horas:minutos:segundos (HH:MM:SS). Gostaria de usar variáveis ​​para extrair dados de toda a linha se a hora e os minutos forem atendidos:

var1=20:20
var2=20:22
cat test_data.txt | awk '{if ($1 == "'"$var1"'" || $1 == "'"$var2"'") print $0;}'

Saída esperada:

20:20:20 test1
20:22:57 test7

O awk que estou usando claramente não funciona, pois não quero pesquisar em segundos. O método abaixo funciona, mas como uso múltiplas variáveis ​​no exemplo:

var1=20:20
var2=20:22
ERE='^'$var1':[[:digit:]]+$' <test_data.txt awk '$1 ~ ENVIRON["ERE"]'

Não tenho certeza se o acima pode lidar com várias variáveis ​​no mesmo comando como um

Saída do comando acima:

20:20:20 test1
awk
  • 2 respostas
  • 21 Views
Martin Hope
Christopher Karsten
Asked: 2022-10-25 22:52:19 +0800 CST

Como usar asteriscos no awk if statment

  • 5

Eu tenho um cenário em que preciso imprimir uma linha, mas usando um awk if para procurar um número é acrescentado dois pontos duplos com mais números:

Veja abaixo exemplo:

test1 test2 37:375003 test3 test4
test1 test2 38:375004 test3 test4
test1 test2 39:375005 test3 test4
test1 test2 40:375006 test3 test4
test1 test2 41:375007 test3 test4

O que eu quero alcançar é usando o comando como abaixo:

cat test_out.txt | awk "{if ($3 == 37~/\:*/ ) print $0;}"

O acima deve me dar a linha abaixo:

test1 test2 37:375003 test3 test4

Obtendo o erro de sintaxe abaixo:

Syntax Error The source line is 1.
The error context is
             {if ( >>>  == <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
awk
  • 2 respostas
  • 53 Views
Martin Hope
Christopher Karsten
Asked: 2022-02-22 10:51:18 +0800 CST

Classifique o caminho do diretório absoluto em ordem alfabética e numérica

  • 0

Estou tendo dificuldade em encontrar soluções on-line para classificar um caminho de diretório absoluto usando letras e números.

Exemplo é o abaixo em um arquivo chamado test.txt

 /opt/informix/data/dcdwhdev/rootdbs.2
 /opt/informix/data/dcdwhdev/db1.1
 /opt/informix/data/dcdwhdev/db1.10
 /opt/informix/data/dcdwhdev/db1.11
 /opt/informix/data/dcdwhdev/rootdbs.1
 /opt/informix/data/dcdwhdev/db1.12
 /opt/informix/data/dcdwhdev/db1.19
 /opt/informix/data/dcdwhdev/db1.2
 /opt/informix/data/dcdwhdev/db1.21
 /opt/informix/data/dcdwhdev/db1.22
 /opt/informix/data/dcdwhdev/db1.23
 /opt/informix/data/dcdwhdev/db1.3
 /opt/informix/data/dcdwhdev/db1.31
 /opt/informix/data/dcdwhdev/db1.32
 /opt/informix/data/dcdwhdev/db1.33

Abaixo está o que eu quero alcançar:

/opt/informix/data/dcdwhdev/db1.1
/opt/informix/data/dcdwhdev/db1.2
/opt/informix/data/dcdwhdev/db1.3
/opt/informix/data/dcdwhdev/db1.10
/opt/informix/data/dcdwhdev/db1.11
/opt/informix/data/dcdwhdev/db1.12
/opt/informix/data/dcdwhdev/db1.19
/opt/informix/data/dcdwhdev/db1.21
/opt/informix/data/dcdwhdev/db1.22
/opt/informix/data/dcdwhdev/db1.23
/opt/informix/data/dcdwhdev/db1.31
/opt/informix/data/dcdwhdev/db1.32
/opt/informix/data/dcdwhdev/db1.33
/opt/informix/data/dcdwhdev/rootdbs.1
/opt/informix/data/dcdwhdev/rootdbs.2
aix sort
  • 2 respostas
  • 66 Views
Martin Hope
Christopher Karsten
Asked: 2020-01-22 00:41:46 +0800 CST

Awk todas as linhas acima do parâmetro correspondente

  • 0

Eu tenho um arquivo chamado test.out com as linhas abaixo em:

-rw-rw----    1 informix informix    9117025 Jan 21 05:22 shop4_0_Log0000331875.Z
-rw-rw----    1 informix informix    8897981 Jan 21 05:24 shop4_0_Log0000331876.Z
-rw-rw----    1 informix informix    9325351 Jan 21 05:31 shop4_0_Log0000331877.Z
-rw-rw----    1 informix informix    9645109 Jan 21 05:34 shop4_0_Log0000331878.Z
-rw-rw----    1 informix informix    9950581 Jan 21 05:40 shop4_0_Log0000331879.Z
-rw-rw----    1 informix informix   10655940 Jan 21 05:59 shop4_0_Log0000331880.Z
-rw-rw----    1 informix informix   10832325 Jan 21 06:39 shop4_0_Log0000331881.Z
-rw-rw----    1 informix informix    8521443 Jan 21 07:42 shop4_0_Log0000331882.Z
-rw-rw----    1 informix informix   10283566 Jan 21 08:02 shop4_0_Log0000331883.Z
-rw-rw----    1 informix informix   10633957 Jan 21 08:51 shop4_0_Log0000331884.Z

Eu quero imprimir todas as linhas acima do parâmetro grep value 331881:

Meu resultado desejado deve ser como abaixo:

-rw-rw----    1 informix informix    9117025 Jan 21 05:22 shop4_0_Log0000331875.Z
-rw-rw----    1 informix informix    8897981 Jan 21 05:24 shop4_0_Log0000331876.Z
-rw-rw----    1 informix informix    9325351 Jan 21 05:31 shop4_0_Log0000331877.Z
-rw-rw----    1 informix informix    9645109 Jan 21 05:34 shop4_0_Log0000331878.Z
-rw-rw----    1 informix informix    9950581 Jan 21 05:40 shop4_0_Log0000331879.Z
-rw-rw----    1 informix informix   10655940 Jan 21 05:59 shop4_0_Log0000331880.Z

Usando o comando abaixo, posso especificar quantas linhas acima imprimir:

grep -n 331881 test.out | cut -d':' -f1 |  xargs  -n1 -I % awk "NR<=%+0 && NR>=%-1" test.out | sed '$d'

O comando acima imprimirá apenas a quantidade especificada de linhas, neste caso 1 linha, mas quero alterar o acima para imprimir tudo acima da linha grepped. Estou lutando para encontrar uma solução para o meu problema ou uma maneira mais fácil.

awk text-processing
  • 5 respostas
  • 103 Views
Martin Hope
Christopher Karsten
Asked: 2019-11-13 02:18:12 +0800 CST

Arredonde a 2ª casa decimal ao realizar o cálculo dentro do awk

  • 0

aqui está um exemplo simples:

echo "36974820" | awk '{print "("$1 " KB)" " (" $1/1024 " MB)" " (" $1/1024/1024 " GB)\n"}'

Resultado:

(36974820 KB) (36108.2 MB) (35.2619 GB)

O que eu quero está abaixo:

(36974820 KB) (36108.2 MB) (35.26 GB)

Eu sei que é possível usar o abaixo separadamente:

echo "5.5434" | awk '{printf "%.2f\n", $1}'

A saída é:

5.54

Eu quero combinar o acima com meu awk para realizar os cálculos para arredondar para a 2ª casa decimal.

ksh
  • 1 respostas
  • 65 Views
Martin Hope
Christopher Karsten
Asked: 2019-10-07 06:33:47 +0800 CST

Como grep números inteiros, incluindo caracteres especiais?

  • -1

Eu tenho um arquivo chamado teste com as linhas abaixo:

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
10. Mark Ronson - Find U Again (feat. Camila Cabello).mp3
11.  Mabel  -  Mad Love.mp3
12. Sigala & Becky Hill - Wish You Well.mp3
13. CamelPhat & Jake Bugg - Be Someone.mp3
14. Jess Glynne & Jax Jones - One Touch.mp3
15. Zara Larsson - Don't Worry Bout Me.mp3
16. Pink Ft, Cash Cash - Can We Pretend.mp3
17.  Jax Jones & Martin Solveig & Madison Beer  -  All Day And Night (Jax Jones & Martin Solveig Present Europa).mp3
18. Martin Garrix - Summer Days (feat. Macklemore & Patrick Stump of Fall Out Boy).mp3
19. Little Mix - Bounce Back.mp3

Eu quero grep para a primeira coluna usando 1. representando o nome da música. O comando que estou usando é:

#cat test | grep -w "1."

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
10. Mark Ronson - Find U Again (feat. Camila Cabello).mp3
11.  Mabel  -  Mad Love.mp3
12. Sigala & Becky Hill - Wish You Well.mp3
13. CamelPhat & Jake Bugg - Be Someone.mp3
14. Jess Glynne & Jax Jones - One Touch.mp3
15. Zara Larsson - Don't Worry Bout Me.mp3
16. Pink Ft, Cash Cash - Can We Pretend.mp3
17.  Jax Jones & Martin Solveig & Madison Beer  -  All Day And Night (Jax Jones & Martin Solveig Present Europa).mp3
18. Martin Garrix - Summer Days (feat. Macklemore & Patrick Stump of Fall Out Boy).mp3
19. Little Mix - Bounce Back.mp3

Tudo parece ser grepped para. Mas suponho que veja apenas o abaixo:

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
grep
  • 1 respostas
  • 39 Views
Martin Hope
Christopher Karsten
Asked: 2019-07-20 00:27:32 +0800 CST

cat arquivo em loop for mantendo o formato de dados em 1 linha uma vez em loop

  • 0

Eu tenho um arquivo chamado indexes.out

O conteúdo abaixo está dentro do arquivo indexes.out:

informix abc_aseld_idx1
informix abc_aseld_idx2
informix abc_aseld_idx3
informix abc_aseld_idx4
informix abc_aseld_idx5

Eu quero criar um loop for que possa puxar cada linha de cada vez mantendo o formato. Estou usando o comando for loop abaixo:

for i in `
cat indexes.out`
do
echo "$i"
done

A saída é:

informix
abc_aseld_idx1
informix
abc_aseld_idx2
informix
abc_aseld_idx3
informix
abc_aseld_idx4
informix
abc_aseld_idx5
informix

Eu quero ver a mesma saída como arquivo, porque quero trabalhar com ambas as colunas no loop posteriormente trabalhando com awk $1 e $2:

informix abc_aseld_idx1
informix abc_aseld_idx2
informix abc_aseld_idx3
informix abc_aseld_idx4
informix abc_aseld_idx5

Uma vez no loop, quero usar cada linha para filtrar colunas específicas individualmente.

aix ksh
  • 2 respostas
  • 1547 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help
subwaysurfers
my femboy roommate

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve