-1
votes

Répétez chaque ligne plusieurs fois à l'aide de Linux

J'ai 1 fichier avec certaines données. Comme

my_file: xxx

sortie_file: xxx

J'essaie de répéter chaque ligne plusieurs fois (3- 1 = 2, 8-4 = 4, 14-9 = 5). Je lie cette commande: xxx

mais c'est répéter 2 fois pour toutes les lignes. Je veux répéter chaque ligne n fois. C'est possible? Si c'est le cas, veuillez me donner quelques suggestions.

Merci d'avance.


12 commentaires

Utilisez SEQ 1 $ N au lieu de SEQ 1 2


Il montre de la même manière que mon fichier d'entrée.


Je ne vois pas la logique. Pourquoi N = 3 pour A , n = 2 pour B , n = 4 pour C , etc?


Parce que j'ai des conditions préalables. Pour "A" si la valeur de condition préalable (N) est 3, alors je dois imprimer 3 fois cette ligne. Pour "B" si la valeur de condition préalable (n) est 4, alors je dois imprimer 4 fois cette ligne.


Et d'où viennent ces conditions préalables. Si vous voulez l'automatiser, il doit y avoir une règle à suivre.


my_file.txt 1 4 A 5 9 B 10 20 C Donc, je dois donc calculer la différence et imprimer "A" "B" "C" que plusieurs fois. C'est la raison principale.


Pourquoi n'est-ce pas dans la question?


Veuillez mettre à jour la question pour afficher le contenu correct de my_file.txt et la sortie correspondante. Parce que cette entrée doit avoir 10 C , pas seulement 3.


Est 1 4 a une ligne ou 3 lignes?


@jonson Veuillez modifier votre question et inclure le my_file.txt 1 4 A 5 9 B 10 20 C "Thing" (Contenu de fichier?) Dans votre question. Veuillez expliquer comment fonctionne cette "valeur de condition préalable (n)" fonctionne.


Oui en une ligne. Ok merci beaucoup pour votre suggestion.


@Tedlyngmo je suis coquille bash.


3 Réponses :


2
votes

Lisez chaque ligne en 3 variables et utilisez les deux premières variables comme plage de répétition.

while read -r start end char; do
    for ((i = start; i < end; i++)); do
        echo "$char"
    done
done < my_file.txt


0 commentaires

2
votes

Utiliser awk pour cela: xxx

sortie: xxx


2 commentaires

n est différent pour chaque ligne.


Vérifiez son commentaire. Il dit que le nombre de répétitions provient du fichier, pas de codé dur comme ça.



1
votes

Dans le cas où est une option: < Pré> xxx

pour chaque ligne, il Split S La ligne sur WhitSpace et @A est la matrice de maintien de ce résultat. < p> Il imprime ensuite le troisième élément de la matrice ( $ A [2] ) + une nouvelle ligne, répété (le x ) le nombre de fois que vous avez si vous prenez si vous prenez. La valeur dans la colonne 2 moins la valeur de la colonne 1.


0 commentaires