J'écris un script bash, qui à un moment donné utilise nslookup
pour résoudre certains noms dans une boucle. Il est sortie ressemble à ceci:Bash Script: écris toutes les lignes de stdin dans le fichier sauf les trois premières
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: example.org
Address: 93.184.216.34
Je voudrais enlever les trois premières lignes, sans avoir à écrire la sortie vers un fichier. J'ai essayé d'utiliser tail
, mais je n'ai pas pu le lire depuis le STDIN.
nslookup "${name}" \
| tail +2 -
Cette tente de lire +2
fichier: tail: cannot open ‘+2’ for reading: No such file or directory
Comment puis-je redirigez la sortie de nslookup pour enlever les trois premières lignes, d'écrire tout cela dans un fichier plus tard, comme celui-ci:
while read name; do
nslookup "${name}" \
| remove-three-lines \
>> file.out
done <"${nameFile}"
J'ai toute 'boucle while' dans une fonction que j'appelle comme' doStuff> "$ {outputFile}" 'toutes les instructions' printf' de la fonction sont imprimées dans le fichier de sortie mais les lignes i de 'nslookup' dans' queue' sont imprimées sur stdout, savez-vous pourquoi? –
@CelestialDragonofOsiris: Essayez: 'nslookup" $ {name} "| & tail -n +4>" $ {outputFile} "' car la sortie pourrait provenir de 'stderr' – anubhava
Une réponse complète, si un peu sèche ... J'ai écrit une réponse 'sed', que je ne vois aucune raison de poster maintenant, qui est complémentaire de la tienne:' command | sed -n '4, $ p'' ... Je dois reconnaître que votre réponse exprime l'intention de OP d'une manière plus directe ... – gboffi