-1
votes

Comment analyser le fichier donné?

Je veux avoir le bloc (tout ce qui est ci-joint B / W {} ) qui a le dernier UTC heure. Retirez les blocs en double (non lignes) et ne montre que le bloc qui a le dernier UTC en elle. Je veux que ce soit dans le script shell. xxx

par exemple: je veux la sortie du fichier donné comme: xxx


3 commentaires

Avez-vous essayé quelque chose?


Un script shell semble être le mauvais outil pour ce travail.


Vous pouvez même suggérer une solution en python ..!


3 Réponses :


1
votes

Vous pouvez tester le script suivant (Assomption: fichier de données s'appelle File.txt):

#!/bin/bash

# - delete all lines without "utc"
# - extract timestamp
# - sort entries
# - save last entry in variable timestamp
timestamp="$(sed '/"utc":/!D;s/.*:\s*"\([^"]*\)"/\1/g' file.txt | sort | tail -1)"

# - print file in reverse order
# - grep timespamp, 1 line before, 4 line after pattern
# - extract last 6 lines
# - reverse order
tac file.txt | grep "$timestamp" -A 4 -B 1 | tail -6 | tac


0 commentaires

1
votes

supposons que votre fichier soit te1.txt : xxx

xxx


0 commentaires

1
votes

Lorsque les blocs sont séquentiels, vous voulez le dernier bloc.
Avec gnu sed 4.2.2 code> Vous pouvez utiliser

sed -z 's/.*}\n{/{/' inputfile


0 commentaires