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

Dipankar's questions

Martin Hope
Dipankar
Asked: 2018-06-17 02:45:18 +0800 CST

Script de shell para classificar por coluna de data usando o comando Linux 'sort'

  • 1

Eu tenho um arquivo chamado session.log Ele contém alguns dados de texto. A 1ª coluna contém o número de série. A 2ª coluna contém o nome de usuário. A 3ª coluna contém a última data de login. A 4ª coluna contém o resultado.

Um usuário fez login várias vezes. Eu preciso encontrar a última data de login para cada usuário único. Então eu escrevi um script de shell. A saída exibirá as linhas com a data de login mais recente (3ª coluna) para cada usuário único (2ª coluna). A saída não deve conter o mesmo nome de usuário várias vezes.

$ cat session.log
1 u1 2018-05-19 passe
2 u2 2018-06-15 passe
3u3 2018-05-18 passe
4 u4 2018-05-17 passe
5 U2 2018-05-14 passe
6 u4 2018-07-11 passe
7 u1 2018-05-16 passe
8u3 2018-05-13 passe
9 u1 2018-08-12 passe
10u1 2018-05-10 passe

O que eu tentei:

( awk {print} session.log | cut -f2 -d' ' | sort | uniq ) > store.txt
for line in $(cat "store.txt")
do
    touch "$line.txt"
    grep "$line" session.log > "$line.txt"
    temp=$(sort -k3 "$line.txt" | awk 'END{print}')
    echo $temp > "$line.txt"
    cat "$line.txt"
done

Resultado

$ ./sort.sh
9 u1 2018-08-12 passe
2 u2 2018-06-15 passe
3u3 2018-05-18 passe
6 u4 2018-07-11 passe

O script shell funciona para o formato de data (aaaa-mm-dd) e (aaaa/mm/dd). Existe algum código melhor para fazer o mesmo trabalho? Usando awkcomo fazemos isso?

EDITAR:

$ cat sort.sh
( awk {print} session.log | cut -f2 -d' ' | sort | uniq ) > store.txt
for line in $(cat "store.txt")
do
    #touch "$line.txt"
    grep "$line" session.log > "$line.txt"
    echo $(sort -k3 "$line.txt" | awk 'END{print}')
    #temp=$(sort -k3 "$line.txt" | awk 'END{print}')
    #echo $temp > "$line.txt"
    #cat "$line.txt"
done
rm -f store.txt
shell-script awk
  • 1 respostas
  • 6611 Views
Martin Hope
Dipankar
Asked: 2018-06-02 07:36:31 +0800 CST

Shell Script: formato correto das variáveis

  • 1

Eu não sei como escrever variáveis ​​comsed

Então, eu quero fazer a seguinte tarefa usando o loop for:

sed -n '1,200p' big_file.txt > 1to200.txt
sed -n '201,400p' big_file.txt > 201to400.txt
sed -n '401,600p' big_file.txt > 401to600.txt
sed -n '601,800p' big_file.txt > 601to800.txt
sed -n '801,1000p' big_file.txt > 801to1000.txt
sed -n '1001,1200p' big_file.txt > 1001to1200.txt
sed -n '1201,1400p' big_file.txt > 1201to1400.txt
sed -n '1401,1600p' big_file.txt > 1401to1600.txt
sed -n '1601,1800p' big_file.txt > 1601to1800.txt
sed -n '1801,2000p' big_file.txt > 1801to2000.txt
sed -n '2001,2200p' big_file.txt > 2001to2200.txt
sed -n '2201,2400p' big_file.txt > 2201to2400.txt
sed -n '2401,2600p' big_file.txt > 2401to2600.txt
sed -n '2601,2800p' big_file.txt > 2601to2800.txt
sed -n '2801,3000p' big_file.txt > 2801to3000.txt
sed -n '3001,3200p' big_file.txt > 3001to3200.txt
sed -n '3201,3400p' big_file.txt > 3201to3400.txt
sed -n '3401,3600p' big_file.txt > 3401to3600.txt
sed -n '3601,3800p' big_file.txt > 3601to3800.txt
sed -n '3801,4000p' big_file.txt > 3801to4000.txt

O que eu tentei:

j=0
for ((i=1;i<=3801;i=$i+200))
do
    #echo $m,$n
    j=$j + 200
    sed -n '$i,$j p' big_file.txt  > $ito$j.txt 
done

Por favor, ajude-me a fazer isso. Por favor, forneça explicação também.

shell-script sed
  • 2 respostas
  • 102 Views
Martin Hope
Dipankar
Asked: 2017-12-02 00:17:37 +0800 CST

Com a ajuda do número da linha, substitua uma linha inteira por outra linha que contenha o caminho do arquivo

  • 1

Como faço para substituir Old_String por New_String em um arquivo?

Old_String:

$resultado = $client->updateInventory("UpdateInventory.xml");
New_String:
$resultado = $client->updateInventory("/Desktop/new/UpdateInventory.xml");

Old_String no número da linha = 5 em um arquivo chamado file1.txt

O que eu tentei:

sed '5s/.*/'$result = $client->updateInventory("/Desktop/new/UpdateInventory.xml");'/' file1.txt
awk text-processing
  • 4 respostas
  • 603 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