Je veux avoir le bloc (tout ce qui est ci-joint B / W par exemple: je veux la sortie du fichier donné comme: p> {} code>) qui a le dernier
UTC code> heure. Retirez les blocs en double (non lignes) et ne montre que le bloc qui a le dernier
UTC code> en elle. Je veux que ce soit dans le script shell.
3 Réponses :
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
supposons que votre fichier soit strong> p> te1.txt code>:
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
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 ..!