Comment utiliser les commandes GREP / autres sous UNIX pour supprimer les enregistrements de tête et de queue d’un fichier texte

J’ai un fichier plat comme indiqué ci-dessous. Comment supprimer l’en-tête et le pied de page du fichier dont l’en-tête commence par ‘H:’ et la bande-annonce commence par ‘T:’ à l’aide du script shell UNIX (KSH) et

H:20050427 HEADER RECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD T:20050427 TRAILER RECORD 

Pour supprimer la première et la dernière ligne, vous pouvez faire:

  tail -n +2 input-file | head -n -1 > output-file 

… ou simplement supprimer les lignes commençant par ‘H:’ ou ‘T:’ vous pouvez faire:

  egrep -v '^[HT]:' input-file > output-file 

En supposant que ce que vous avez montré est raisonnablement représentatif des autres données (tout ce que vous voulez garder commence par un chiffre et tout ce dont vous voulez vous débarrasser commence par une lettre), cela devrait être quelque chose comme: grep "^[0-9]" inputfile > outputfile

Supprimer la première et la dernière ligne: sed '1d;$d' file