J'ai un répertoire avec plusieurs .txt
fichiers.
À partir de chacun de ces fichiers, je souhaite sélectionner la première ligne et l'imprimer dans un nouveau .txt
fichier (pour obtenir une liste de toutes les premières lignes).
Je l'ai essayé avec les commandes et awk
et l'ai sed
combiné avec une boucle, mais sans succès.
command-line
text-processing
Annemieke Smet
la source
la source
Réponses:
Utilisation
head
:-n1
indiquehead
d'extraire la première ligne uniquement.-q
indique à la tête de ne pas imprimer le nom du fichier.la source
En utilisant
grep
:grep
correspondra à n'importe quel caractère et quittera après la première correspondance, c'est-àgrep
- dire affichera les premières lignes de tous les fichiers d'entrée et nous les enregistronsout.txt
.la source
En utilisant uniquement Bash:
*.txt
est étendu à la liste des dossiers / fichiers se terminant par.txt
dans le répertoire de travail en cours (car il n'y a que les dossiers dont les dossiers se terminant par.txt
ne sont pas un problème);<"$f" read line
lit une ligne du chemin de fichier stocké dansf
et le stocke dansline
;printf "$line\n" >>new.txt
: ajoute le contenu deline
ànew.txt
;la source
Vous l'avez essayé avec
awk
, voici uneawk
versionla source
Une autre approche avec AWK consiste à dire à AWK d'imprimer, mais de passer immédiatement au fichier suivant
sed
permet également l'impression de lignes spécifiques. Ici, je l'ai combiné avecfind
Et perl:
Et pour couronner le tout ,
grep
Tout enregistrer dans un seul fichier est simplement une question d'ajout
> outputFile.txt
à la fin de ces commandes.la source