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-294877

Mauricio Reyes's questions

Martin Hope
Mauricio Reyes
Asked: 2021-09-22 15:21:08 +0800 CST

'If' declaração quebrando sua própria regra ou estou fazendo isso

  • 0

Explicação: Estou brincando um pouco com um script que ajuda a notificar o usuário sobre a expiração do certificado SSL. Se o certificado tiver menos de 30 dias para expirar, isso notificará o usuário, caso contrário, não faça nada.

Mas por algum motivo estranho validando com uma constante maior, até os emails estão enviando, e isso não deve acontecer.

Este é o código:

#!/bin/ksh
    legend="The next certificate almost expires.\n URL: url.com "
    count=30
    daysleft=$(./ssl-cert-check -d /etc/ssl/certs/cert.cer | awk '{print $6}' | tail -n 1);
    #daysleft=50 #Constant to do some test
    sendnot=$(echo $legend | mail -s "url.com SSL cert Expiration" [email protected] < <(./ssl-cert-check -d /etc/ssl/certs/cert.cer))
    if [[ $daysleft -lt $count ]];
    then
    echo "Sending note"
    echo $sendnot
    else
    echo "Doing nothing..."
    fi

Fazendo teste com daysleftconstante, o comando funciona; mas mesmo assim está enviando as notas para o usuário.

Editar: A saída de:

./ssl-cert-check -d /etc/ssl/certs/cert.cer | awk '{print $6}' | tail -n 1

is 9

Qualquer dúvida ou comentário estarei pronto para atender. Cumprimentos!!

scripting ksh
  • 1 respostas
  • 68 Views
Martin Hope
Mauricio Reyes
Asked: 2019-03-29 11:51:51 +0800 CST

Iterar impressão para cada linha na saída

  • -1

Eu quero imprimir uvuveveno final de cada linha, para cada saída na instrução while, conforme abaixo:

var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve

Este é o meu código:

var1="somedata..."
var2="anotherdata..."
while read -u3 w1; read -u4 w2; do
echo "$w1;$w2" >> $file
done 3<<< "$var1" 4<<<"$var2"

var1, var2 imprimem várias ocorrências de um arquivo, portanto, há muitas saídas dessas variáveis. Eu tentei adicionar uvuvevepalavras assim:

var1="somedata..."
var2="anotherdata..."
string="uvuveve"
while read -u3 w1; read -u4 w2; read -u5 w3; do
echo "$w1;$w2;$w3" >> $file
done 3<<< "$var1" 4<<<"$var2" 5<<<"$string"

Essencialmente, preciso de um print da palavra em cada linha, para cada ocorrência encontrada.

Adicionando detalhes:

Var1& var2recuperar linhas de ocorrências que um arquivo contém e, em seguida, colocar em variáveis

Literalmente as linhas são:

var1=$(grep -A12 -B12 "$tofind" $findlogs | grep Date | cut -c 51-65 | sed -e 's! !/!g')
var2=$(grep -A12 -B12 "$tofind" $findlogs | grep Date | cut -c 67-71 | sed -e 's/://g')
linux text-processing
  • 3 respostas
  • 1642 Views
Martin Hope
Mauricio Reyes
Asked: 2018-11-01 11:59:18 +0800 CST

substituir a primeira ocorrência de ponto e vírgula

  • 0

Oi, eu tenho um arquivo de log e quero substituir a primeira ocorrência de ponto e vírgula, como:

head1;head2;head3;head4;head5 
blabb;blabl;;blab;blabl;;bla

Saída desejada:

 head1;head2;head3;head4;head5 
 blabb;blabl;blab;blabl;;bla

Com expressão regular como pode selecionar a primeira ocorrência e substituir por ";" Eu tenho o próximo comando no sed:

sed -i 's/;;/;/g'

mas este substitui todo o arquivo de ocorrências. Existe outra maneira de fazer?

regular-expression sed
  • 1 respostas
  • 349 Views
Martin Hope
Mauricio Reyes
Asked: 2018-09-04 08:42:13 +0800 CST

Como obter as últimas três datas de um arquivo log?

  • 0

Como posso imprimir as três últimas datas da próxima saída:

User;month/day/year

    user1:01/01/2015
    user1:01/01/2015
    user1:01/01/2015
    ...
    user1:01/09/2018
    user1:01/08/2018
    user1:01/07/2018
    user1:01/04/2016
    user1:01/02/2016
    user1:01/01/2016

Neste caso (as datas de 2018)

EDITAR:

Eu tenho o próximo comando com awk:

awk '{ print $1":" substr( $0,285,291 )}' $file_input | awk '{ print $1}' | sort -n -r

Saída Desejada:

    user1:01/09/2018
    user1:01/08/2018
    user1:01/07/2018
awk text-processing
  • 2 respostas
  • 84 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-25 11:34:20 +0800 CST

Como excluir espaços em branco em colunas?

  • 0

Quero filtrar algumas colunas de um arquivo, tem 46 no total. Eu só quero filtrar do 25 até o 46 , da seguinte forma:

Saída Desejada:

Column25 Column26 ... Column47
Column25 Column26 ... Column47
Column25 Column26 ... Column47

Eu tenho o comando correto com awk:

cat -n <(awk '{n=17;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt)

O comando acima, leva da coluna 25 até a última, neste caso é a 47 . Funciona corretamente, imprime todas as strings em todos os campos que eu quero.


Mas há um problema aqui:

As colunas que gostaria de imprimir têm espaços em branco como da seguinte maneira:

Column25 Column26     ...    Column47
Column25 Column26    [...]   Column47
[:space:]Column26  [:space:] Column47
[:space:][:space:] [:space:] [:space:]
Column25 [:space:] [:space:] [:space:]

O problema é: Quando imprimo todas as colunas específicas, as strings em outras colunas passam para os espaços em branco nas colunas desejadas.

Por exemplo:

Column25           Column26             ...          Column47
Column25           Stringsofcolumn12  Manystrings Stringsofcolumn21
Stringsofcolumn23  Stringsofcolumn5   ofmanycolumns Stringsofcolumn22
Column25           Stringsofcolumn16  blablabla    anothermanystrings

Existe alguma maneira de excluir os espaços em branco nas colunas que gostaria de imprimir, para evitar essa situação?


NOTA:

As strings das colunas, possuem o mesmo texto dos cabeçalhos. exemplo: se column28tem strings de conteúdo, as strings são column28literalmente. Mas acho que isso não importa agora, apenas comente.

Obrigada!

linux text-processing
  • 1 respostas
  • 209 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-24 10:37:27 +0800 CST

Como colocar uma pesquisa de string com o comando grep na instrução if?

  • 12

Eu quero pesquisar várias strings em dois arquivos. Se uma string for encontrada em ambos os arquivos, faça algo. Se uma string for encontrada em apenas um arquivo, faça outra coisa.

Meus comandos são os seguintes:

####This is for the affirmative sentence in both files
if grep -qw "$users" "$file1" && grep -qw "$users" "$file2"; then

####This is for the affirmative sentence in only one file, and negative for the other one
if grep -qw "$users" "$file1" ! grep -qw "$users" "$file2"; then

é uma maneira correta de negar e afirmar as afirmações? pd Estou usando o shell KSH.

Agradeço antecipadamente.

awk text-processing
  • 4 respostas
  • 3497 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-23 11:21:52 +0800 CST

Como escrever em novo arquivo se são ocorrências em outro?

  • 0

Preciso criar e escrever em um novo arquivo baseado em ocorrências encontradas em outro arquivo. ou seja:

Occurrence found in first file
then write same Occurrence in another one/new

para ser mais específico:

"File1": para encontrar Ocorrências:

Occurrence1
Occurrence2
OccurrenceN

##If the `Occurence1` is find in `File1` then write in the `new file` the same Occurrence

Tenho o próximo comando funcional kshpara especificar as ocorrências no arquivo e quantas não:

users=(Occurrence1 Occurrence2 Occurrence3 Occurrence4 ... OccurrenceN)
for i in "${users[@]}"
do
grep -qw $i file1 && echo "$i is in the file" || echo "$i is not in the file"
done

Eu faço algumas modificações no código inicial:

users=(Occurrence1 Occurrence2 Occurrence3 ... OccurrenceN)
for i in "${users[@]}"
do
        grep -qw $i File1.txt && echo "$i is in the file" || echo "$i is not in the file"
       if [[ $user = "*is in the file" ]]; then
       echo $user >> users_in_file.txt
       elif [[ $user = "*is not in the file" ]]; then
       echo $user >> users_not_in_file.txt
       fi
done

Tenho ideia de implementar o último comando para pegar meu objetivo, mas não está funcionando. Tem outro para fazer? Desde já, obrigado. Qualquer dúvida poste como comentário.

linux text-processing
  • 1 respostas
  • 40 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-22 08:54:00 +0800 CST

Como pesquisar cada ocorrência em um arquivo de texto Linux?

  • 1

Tenho 23 strings para pesquisar, quero que retorne aquelas que estão no arquivo.

Peguei o código abaixo:

users='User1\|User2\|User3\|User4\|User5\|User6\|User7\|User8\|User9\|User10\|User11\|User12..User23'

Saída desejada:

User1 is in the file
User2 is not in the file
...
User 23 is in the file

Não tenho ideia de como fazer, estava pensando em um array mas, quero algumas dicas se for possível. Desde já, obrigado.

linux text-processing
  • 4 respostas
  • 202 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-21 12:07:13 +0800 CST

Excluir últimos caracteres antes do delimitador

  • 0

O conteúdo do arquivo de entrada é como:

header;header;header;header
2018/06/04;141000;bla;bla

Saída Desejada:

header;header;header;header
2018/06/04;1410;bla;bla

Eu tenho o comando abaixo com sed

sed -i 's/.//16' $inputFile

Mas exclui meu cabeçalho como:

header;hder;header;header
2018/06/04;1410;bla;bla

Para evitar isso tentei fazer:

tail -n +2 | sed -i 's/.//16' $inputFile

Mas não está funcionando. desde já, obrigado

linux text-processing
  • 2 respostas
  • 249 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-10 18:41:32 +0800 CST

Como melhorar a contagem de colunas específicas AWK

  • -1

Eu tenho um arquivo de texto grande, tem 46 colunas no total:

ENTRADA

Column1 Column2 ... Column46

Preciso enumerar e contar quantas vezes se repetem da coluna 17 até a 46. Por exemplo:

Meu arquivo está assim:

Column17 Column18 Column19 Column20 Column21 Column22 Column23 ... Column46

Column17 Column18 Column19 Column20 Column21 Column22 Column23 ... Column46
Column17 Column18          Column20          Column22
         Column18          Column20
                           Column20

Saída Desejada:

1 Column17 - 2 times
2 Column18 - 3 times
3 Column19 - 1 time
4 Column20 - 4 times
5 Column21 - 0 times
6 Column22 - 2 times
7 Column23 - 1 time
    " "    - N times
29 Column46 - 1 times

Meu comando awk:

awk '{n=1;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt

Saída real:

Column1 ... Column46
bla 1 blaN...3 bla 3 
bla 3 blaN...2 bla 5
bla 7 blaN...4 bla 7

Pega toda e cada string de todo o arquivo e conta quantas vezes se repetem. Por exemplo:

Column1 //There are 54 lines, takes all words/strings of that column
bla 3 //The 3 and 4, is the number of repetitions.
bla 4

Mas meu comando conta todas as colunas (do 1 , até o 46 ) e cada frase em si, e o que eu quero é contar do 17 até o 46 como a Saída Desejada Existe alguma maneira de fazer com o meu mesmo comando? ou é necessariamente fazê-lo por outro?

linux text-processing
  • 2 respostas
  • 414 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-10 07:56:45 +0800 CST

Conte cada string de pesquisa de saída awk em um arquivo

  • 0

Vou tentar ser específico e claro.

Eu tenho um arquivo: log.txtele contém várias strings que eu pesquiso para imprimir e contar cada uma delas.

Este é o meu comando, apenas imprima coincidências de colunas no log.txtarquivo:

sed -n '1p' log.txt | awk '{ s = ""; for(i = 25; i <= NF; i++) s = s $i "\n"; print s}'

Explicação

sed -n '1p' //prints the first line
awk '{ s = ""; for(i = 25; i <= NF; i++) s = s $i "\n"; print s}' //prints the next columns from the number 25 column

Entrada:

Column25 Column26 Column27 ColumnN <--#first filter:I need obtain specific headers.                    ColumnN 
Column25         Column27 ColumnN
        Column26 Column27  <--#Count how many times is repeat every string in whole file

Resultado:

Column25
Column26
Column27
Column28
Column29
ColumnN

Eu tento fazer: Da saída anterior eu quero contar todas as coincidências no mesmo arquivo file.logmas no mesmo comando:

sed -n '1p' log.txt | awk '{ s = ""; for(i = 25; i <= NF; i++) s = s $i "\n"; print s}'

e envie novamente para a saída como:

Saída Desejada:

Column25 - n times
Column26 - n times
Column27 - n times
Column28 - n times
Column29 - n times
ColumnN - n times

PS. Estou pensando em usar a mesma variável "$s"no loop for para iniciar uma busca, mas não está funcionando.

linux awk
  • 2 respostas
  • 361 Views
Martin Hope
Mauricio Reyes
Asked: 2018-08-09 13:51:01 +0800 CST

Excluir arquivo de string após espaço

  • 1

Eu tenho muitos arquivos de log gerados como o abaixo:

Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George Armani;Springfield

Eu quero excluir o String Armani , mas meu comando não está funcionando:

cat file.log | grep identifier | cut -d ";" -f | sort | uniq | grep -o '^\S*' > newfile.log

estou seguindo o próximo post

É a outra maneira de fazê-lo?

PS. Existem strings no mesmo campo com comprimentos diferentes.

awk text-processing
  • 3 respostas
  • 233 Views
Martin Hope
Mauricio Reyes
Asked: 2018-07-27 13:29:46 +0800 CST

Excluir uma parte de uma linha com sed?

  • 2

Eu tenho a próxima saída:

Date Time: June 22 12:40:00

Product User Host IP

Software User User *.***.***.***
Software1 User User *.***.***.***

Tentei algumas funções com sede awk, mas não está funcionando; Eu quero que o texto fique da seguinte maneira:

Date Time: June 22 12:40:00

Product User Host

Software User User 
Software1 User User

Eu tenho o seguinte comando:

$ cat Mathematica_06-* | \
  grep -w -A 4 -B 5 "AER8\|User\|User1\|User2\|User3\|User4\|User5\|User6\|User7\|User7\|User8\|User9\|User10\|User11\|User11\|User12\|User13\|User14\|User15\|User16\|User17\|User18\|User19" | \
  awk '{print $1,$3,$4,$5,$7}' | \
  egrep -v
    > Output.log

Tentei adicionar no final, egrep -v "|IP"mas se eu colocar a linha nesse comando, obtive a próxima saída:

Date Time: June 22 12:40:00

Softare User User 
Software User User

Existe alguma outra maneira de excluir as partes "IP" e "*" sem afetar o restante da linha?

sed scripting
  • 3 respostas
  • 9930 Views
Martin Hope
Mauricio Reyes
Asked: 2018-07-26 20:00:39 +0800 CST

Como imprimir linhas específicas de um arquivo de texto com corte

  • 1

Eu tenho o próximo fragmento da saída de um log:

Server Server: Server
Date and Time: June 04 2018 14:10:00
--

Product     Version         User         Host             IP             Duration

Software1      11.0     user               user         *.**.***.***     10:08
Software2      11.0      user                user        *.**.***.***     10:05
===================================================================================

Eu quero com o comando cut apenas filtrar a saída como:

Product     Version         Host             IP             Duration

Software1      11.0    user             *.**.***.***     10:08
Software2      11.0     user            *.**.***.***     10:05

Além disso, quero saber se é possível aplicar o mesmo filtro muitas vezes, pois no primeiro exemplo acima, ele se repete em todo o arquivo.

linux text-processing
  • 3 respostas
  • 11602 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

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve