The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 04-10-2008
gstuart gstuart is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 16
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. :-)
  #2 (permalink)  
Old 04-11-2008
Franklin52 Franklin52 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,345
Citation:
Posté par gstuart View Post
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 devrait vous donner la puissance souhaitée:


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
  #3 (permalink)  
Old 04-11-2008
gstuart gstuart is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 16
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 :-)
  #4 (permalink)  
Old 02-06-2009
RickR RickR is offline
Registered User
  
 

Date d'inscription: février 2009
Messages: 1
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
  #5 (permalink)  
Old 06-07-2009
aenagy aenagy is offline
Registered User
  
 

Date d'inscription: juin 2009
Messages: 1
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"

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.
  #6 (permalink)  
Old 02-06-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2005
Lieu: Boston, MA
Posts: 5131

Code:
#!/bin/ksh

while read current new x
do
   mv "${current}" "${new}"
done < /path/to/lookupFile

  #7 (permalink)  
Old 05-23-2009
allrise123 allrise123 is offline
Registered User
  
 

Join Date: Mai 2009
Messages: 9
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..
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 10:06 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0