J'ai un fichier texte. Tâche - obtenir la première et la dernière ligne du fichier après
$ cat file | grep -E "1|2|3|4" | commandtoprint
$ cat file
1
2
3
4
5
Besoin de cela sans sortie chat (seulement 1 et 5).
~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1
Peut-être que awk et une solution plus courte existent ...
wc -l
n'a rien à voir avec la sortie de la dernière ligne d'un fichier.Réponses:
solution sed :
Lors de la lecture de
stdin
if ressemblerait à ceci (par exempleps -ef
):tête et queue Solution:
Quand les données proviennent d'une commande (
ps -ef
):awk Solution:
Et aussi l'exemple piped avec
ps -ef
:la source
(head -n1 file;tail -n1 file)
j'ai une très grosse commande et un dernier tuyau. Si| sed '1p;$!d'
courte.head && tail
marche vraiment pour vous?seq 10 | (head -n1 && tail -n1)
impressions1
seulement.-e 1b
- sur la première ligne, branchez-vous à la fin du script sed, moment auquel l'implicite "empreinte" se produit. Si l'entrée ne comporte qu'une seule ligne, sed se termine. Sinon, pour toutes les lignes sauf la dernière, supprimez. Sur la dernière ligne, l'imprimé "implicite" se reproduit.sed
4.2.2. À votre santé.sed -n '1p;$p' file.txt
imprimera la 1ère et la dernière ligne du fichier file.txt.la source
sed -e 1b -e '$!d'
si vous ne le souhaitez pas.Un pur pur Bash≥4 drôle:
Après cela, vous aurez un tableau
ary
avec le premier champ (c'est-à-dire, index0
) en première lignefile
et le dernier champ en dernière lignefile
. Le rappelcb
(facultatif si vous souhaitez masquer toutes les lignes du tableau) désactive toutes les lignes intermédiaires afin de ne pas encombrer la mémoire. En tant que sous-produit gratuit, vous aurez également le nombre de lignes du fichier (en tant que dernier index du tableau + 1).Démo:
la source
Avec
sed
vous, vous pouvezd
supprimer des lignes si PAS le1
premier et NON le dernier$
.Utilisez
!
pourNOT
(annuler) une condition et laX{Y..}
construction pour combiner des conditionsX
ANDY
:ou vous pouvez utiliser une plage allant de
2
nd à la$
t et supprimer toutes les lignes de cette plage sauf la$
ligne la t:la source
Utiliser Perl:
L’impression ci-dessus imprime le premier élément de la sortie de
seq 10
viaif 1..1
, tandis que l’or eof
imprimera également le dernier élément.la source
/etc
abrt
etyum.repos.d
doivent faire cette question?Sans chat:
ou
la source
la source