Je veux diviser et GZip un fichier volumineux, et cette réponse semblait être ce que je cherchais, et cela me semblait une manière très utile de faire des choses auxquelles je n’avais jamais pensé, alors je voudrais les généraliser; le seul problème est: cela ne semble pas fonctionner.
Dites que je veux diviser mon entrée et la traiter plus avant (je sais split
mais je veux le diriger directement dans mon script!)
Cette utilise read
lire une ligne dans une variable
#!/bin/bash
printf " a \n b \n c \n d " |
for ((i = 0 ; i < 2 ; i++)) ; do
echo "<< $i >>"
for ((j = 0 ; j < 2 ; j++)) ; do
read l
echo "$l"
done
done
Il imprime
<< 0 >>
a
b
<< 1 >>
c
d
Ce qui est presque ce que je veux, mis à part le fait qu'il réduit les espaces au début et à la fin (et peut-être modifie la ligne d'une autre manière? Cela fonctionnera-t-il avec du contenu codé UTF-8 arbitraire?) modifier résolu
Et j'imagine que cela pourrait être assez lent. modifier Le comparé: au moins 3000x plus lent.
Alors j'ai essayé de le faire passer à travers head
(Je reçois le résultat en utilisant awk
comme le suggère la réponse, cela ne semble pas faire autre chose)
#!/bin/bash
printf " a \n b \n c \n d " |
for ((i = 0 ; i < 2 ; i++)) ; do
echo "<< $i >>"
head -n 2
done
Qui imprime
<< 0 >>
a
b
<< 1 >>
Et arrête parce que head
ferme apparemment son entrée en sortie. Je n'ai pas trouvé de programme qui ne le fasse pas, et peut-être est-il réellement imposé par le système? (Je suis sous OS X)
En utilisant head -n 2 <&0
qui (selon les bash docs) copie le descripteur de fichier ne fonctionne pas non plus.
Dois-je utiliser un tuyau nommé? Y a-t-il une incantation pour faire ce travail?
read
le dépouille, echo ".$l."
empreintes .a.
. Je pense que le shell supprime les espaces lors de la division des arguments, l=" a "; echo $l
empreintes a
mais l=" a "; echo "$l"
affiche les espaces `a`. ( read
peut également saisir des espaces et remplir plusieurs variables, c’est probablement pour cela)
read l
.
echo "..$l.."
pour voir ce qui a été stocké dans l comme écho ignore les blancs de début et de fin.