J'ai un fichier contenant 8000 lignes, je veux imprimer des lignes 1,4,8,12, ..., 7996.
J'ai essayé ce code p> Mais cette erreur apparaît: p> ./ test.csh: ligne 3: 4 * {1: Erreur de syntaxe: Opérande attendue (jeton d'erreur est "{1") p>
blockQuote> Quel est le problème, comment puis-je faire cela? p> p>
3 Réponses :
Utiliser awk code> commande:
explication: h3>
@David mais qui imprimera lorsque le modulo est 2 ou 3, aussi.
Oh, correct tu es - je savais que le café avait porté alors ... Je pense vraiment que vous avez besoin de awk 'nr == 1 || Nr% 4 == 0 ' code> Pour correspondre
1, 4, 8, 12, 16, ... code> Voici un test rapide Vous pouvez exécuter
printf "% s \ n "{1..20} | awk 'nr == 1 || NR% 4 == 0 ' code> Si vous n'êtes pas sur BASH, utilisez
$ (SEQ 1 20) code> au lieu de l'expansion BRACE i>.
La raison pour laquelle je dis que c'est maintenant vous correspondez à 1, 5, 9, 13, ... code>
Pour rendre cela un peu plus petit: awk 'nr% 4 == 1' fichier code>. Awk fonctionne avec
modèle {action} code> paires. Si un modèle est écrit, l'action par défaut est
imprimer 0 $ code>.
Si vous préférez assez intéressant, il s'agit de l'exemple exact indiqué dans 'Premier ~ étape'
Cette extension GNU correspond à chaque ligne de marche commençant par la ligne
PREMIER. En particulier, des lignes seront sélectionnées lorsqu'il existe un
non négatif n tel que le numéro de ligne actuel est égal au premier + (n
* MARCHER). Ainsi, on utiliserait '1 ~ 2' pour sélectionner le numéro impair
lignes et '0 ~ 2' pour des lignes numérotées pair; choisir chaque troisième ligne
À partir de la seconde, '2 ~ 3' serait utilisé; choisir tous les cinquième
ligne commençant par le dixième, utilisez '10 ~ 5 '; et '50 ~ 0 'est juste un
manière obscure de dire «50». p>
SED code>
man SED code> p>
The following commands demonstrate the step address usage:
$ seq 10 | sed -n '0~4p'
4
8
Vous semblez essayer d'utiliser la syntaxe Bash, même si votre question est étiquetée CSH .
Même donc, cela a plusieurs erreurs. Vous ne pouvez pas avoir d'espace après l'opérateur d'affectation, et vous devez citer le script Mais l'idée que vous devez boucler sur le fichier 8000 fois et imprimer une ligne de la sorte dans chaque itération est également imparfaite. Vous pouvez dire Je basculerais à la norme pour cela, cependant. P> SED CODE> (sinon il pense
p code> est le premier nom de fichier ... ou je suppose Vous voulez dire réellement
p code>). p>
sed code> d'imprimer toutes les chaînes de la quatrième ligne avec un seul script comme p>
Les amis ne laissent pas amis utiliser CSH afin que ceci est peut-être une étape dans la bonne direction.
Le message d'erreur indique que vous utilisez
csh code>, pas bash. Ce sont des langues fondamentalement différentes.
Si vous voulez chaque 4ème ligne à partir du premier, la séquence est de 1, 5, 9, 13, ...
Évitez du tout que l'utilisation de csh i>. Il est cassé, buggy et juste défectueux. Top 10 des raisons de ne pas utiliser C shell et Programmation de la CSH considérée comme nocif