![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Perl: Recherche de chaîne de ligne, de recherche et remplacer du texte | Crypto | De programmation et de script Shell | 4 | 01-04-2008 10:24 AM |
| Nécessité de remplacer toutes les occurrences d'une chaîne de recherche en utilisant sed | mjs3221 | De programmation et de script Shell | 2 | 12-07-2006 02:09 AM |
| String Rechercher et Remplacer | IwishIknewC | UNIX pour les nuls Questions et réponses | 1 | 03-25-2006 06:28 AM |
| Recherche et remplacement de chaîne de caractères entre 2 points | whited05 | De programmation et de script Shell | 3 | 10-11-2005 03:05 PM |
| recherche de chaîne de remplacer | krishna | UNIX for Advanced & Expert Users | 1 | 12-19-2001 01:49 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Recherche, remplacer dans la chaîne avec de la ficelle de fichier1 (lookup table) fichier2?
Bonjour: J'ai une autre question. S'il vous plaît examiner les deux exemples suivants, les fichiers délimités par des tabulations:
File_1: ABF1 YKL112w ABF1 YAL054c ABF1 YGL234w Ace2 YKL150w Ace2 YNL328c Cup9 YDR441c Cup9 YDR442w Cup9 YEL040w ... Fichier 2: ... ABF1 YKL112W ACE2 YLR131C CUP9 YPL177C ... File_2 est un "tableau de recherche;« Je veux remplacer $ 1 dans File_1 avec le domaine correspondant à 2 $ en File_2, de plus, l'ajout d'une colonne centrale contenant la chaîne "tf", et une colonne de "plus" ( "1" dans la première colonne position), tous délimités par des tabulations. En outre, il serait idéal si le cas pourrait être ignoré pour la recherche / remplacement, mais que l'ordre alphabétique de sortie de tous les majuscules [az] converti au [AZ]. FYI, ce sont des gènes de la levure, en plus des chiffres et des lettres, certains des gènes contiennent des tirets (par exemple, YBR162W-A), mais aucune ne contient des virgules, virgules, espaces, etc File_3 de sortie: 1 YKL112W tf YKL112W 1 YKL112W tf YAL054C 1 YKL112W tf YGL234W 1 YLR131C tf YKL150W 1 YLR131C tf YNL328C 1 YLR131C tf YLR439W 1 YPL177C tf YDR441C 1 YPL177C tf YDR442W 1 YPL177C tf YEL040W ... Cela est lié à (mais différente de) ma précédente question, Biologiste moléculaire de nouveau besoin d'aide: recherche / remplacement de script Ici, la première colonne est un "mannequin" poids, de maintenir la "matière de compatibilité», avec mon précédent fichier, comme le montre cet exemple: 1 a b gi 1 a une pp 1 a pp c 1 t gi u 1 t gi w 1 t gi x 1 t pp z 2 a d pp 2 a pp e 2 t gi v 2 t gi z 3 a pp b 3 t gi y ... En fin de compte, je vais finir avec un dossier comme celui-ci, avec $ 1 \u003d poids, gene1 \u003d $ 2, $ 3 \u003d association, $ 4 \u003d gene2: 1 YKL112W tf YKL112W 1 YKL112W tf YAL054C 1 YKL112W tf YGL234W 1 YLR131C tf YKL150W 1 YLR131C tf YNL328C 1 YLR131C tf YLR439W 1 YPL177C tf YDR441C 1 YPL177C tf YDR442W 1 YPL177C tf YEL040W ... 1 YBL012C gi YCL045C 1 YBL012C pp YBL012C 5 YBL012C pp YHR039C-A 1 YLR363W-A gi YNL143C 4 YLR363W-A gi YPR123C 1 YLR363W-A gi YLR467W 1 YLR363W-A pp YNR073C 2 YBL012C pp YGL232W 2 YBL012C pp YOR102W 2 YLR363W-A gi YFL066C 2 YLR363W-A gi YNR073C 3 YBL012C pp YCL045C 3 YLR363W-A gi YKL100C ... Merci - Une fois de plus, * très * très apprécié! Cordialement, Greg S. :-) |
|
||||
|
Citation:
Code:
awk '
FNR==NR{a[tolower($1)]=$2;next}
tolower($1) in a{print "1 " a[tolower($1)] " tf " toupper($2)}
' "File_2" "File_1"
Observe |
|
||||
|
C'est absolument merveilleux! ... :-)
Voici ma compréhension de Franklin52 du code: Unix Manuels - AWK référence # \u003d\u003d Est "est égal" tolower (string): Retourne la chaîne avec tous les caractères majuscules remplacé avec leurs équivalents en minuscules. toupper (string): Retourne la chaîne avec tous les caractères minuscules remplacé avec leurs équivalents en majuscules. FNR: Un nombre record de fichier d'entrée. NR: nombre de dossiers traités. Ainsi, le script ci-dessus traduit (? - S'il vous plaît me corriger si je me trompe), comme awk ' FNR NR \u003d\u003d (a [tolower ($ 1)] \u003d $ 2; next) tandis que le numéro d'enregistrement (ligne) est égal au nombre total de dossiers (est vrai), faire tous les éléments suivants: get $ 1 (nom de la commune de gènes - convertis en minuscules - obligatoire depuis le champ correspondant de File_1 est en minuscules, sinon, elle ne réussira pas à "match" - linux est sensible à la casse) dans le fichier de recherche (File_2), set (changer ) à la (déjà en majuscules) le nom systématique de gènes ($ 2) de la même table, puis de lire le prochain numéro d'enregistrement (ligne); tolower ($ 1) dans un (print "1" a [tolower ($ 1)] "tf" toupper ($ 2)) maintenant, pour chaque $ 1 dans File_2 (actuellement fixé à 2 $ en majuscules, à partir de la table de recherche), dans le second fichier (File_1, l'un à être convertis), d'imprimer "1", $ 2 de File_2; "tf", $ 2 de File_1 (retourné comme majuscule, pour convertir la moyenne mobile minuscule c, w,-a, etc) "File_2" "File_1" File_1 \u003d fichier à traiter (convertis) File_2 \u003d "fichier de recherche" ( "common_to_systematic.tab) ! Cela fonctionne avec brio! Merci beaucoup, Franklin52! Avoir un super week-end! ... Greg :-) |
|
||||
|
Renommer plusieurs fichiers à partir d'un tableau de recherche
Est-il possible de modifier le script ci-dessus pour renommer les fichiers sur la base d'un tableau de recherche?
par exemple: Nouvelle actuelle A87324.jpg A1372365.jpg A89732.jpg A98274.jpg A130347.jpg A73689.jpg ... Merci, Rick |
|
||||
|
Citation:
Je suis en train de modifier le code ci-dessus pour une situation similaire. J'ai deux fichiers en entrée. Le premier fichier (DONNEES) est un fichier CSV avec les noms conviviaux dans la première colonne et UUIDs dans la deuxième colonne. Le second fichier (VM) est une liste de fichiers avec le chemin d'accès complet à l'aide du UUID. Par exemple: ----- ----- Datastores.csv nom convivial 1, UUID1 nom convivial 2, UUID2 nom convivial 3, UUID3 etc ----- ----- Datastores.csv ----- ----- VMs.txt / folder/UUID3/vm1.vmx / folder/UUID2/vm2.vmx / folder/UUID1/vm3.vmx / folder/UUID3/vm4.vmx etc ----- ----- VMs.txt Ce que je recherche est la sortie qui ressemble à ceci: ----- ----- Output.txt / dossier / nom convivial 3/vm1.vmx / dossier / nom convivial 2/vm2.vmx / dossier / nom convivial 1/vm3.vmx / dossier / nom convivial 3/vm4.vmx etc ----- ----- Output.txt L'échantillon awk n'est pas intuitif pour moi, même après la lecture de l'explication et l'autre de passer le O'Rielly poche. Le cas de l'entrée ne soit pas besoin d'être changé - s'il ya un problème avec les cas correspondants, j'ai d'autres questions à traiter. Merci pour votre aide à l'avance. |
|
||||
|
salut les gars!
Je suis nouveau au script shell .. Je voulais savoir abt sed commande et comment elle fonctionne? voici ce que je veux faire, je veux à la recherche originale export.txt chaîne dans le fichier qui est: l'exportation mibs \u003d \ opt \ mymibs \ Je tiens à le remplacer par l'exportation mibs \u003d \ opt \ new_mibs \ S'il vous plaît, aidez avec elle merci d'avance Dernière édition par allrise123; au 05.23.2009 05:17 PM.. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|