The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Perl: busca de corda em linha, em seguida, procurar e substituir texto Crypto Programação Shell Script e 4 01-04-2008 10:24
Necessidade de substituir todas as ocorrências de uma string de pesquisa usando sed mjs3221 Programação Shell Script e 2 12-07-2006 02:09
Seqüência Search & Replace IwishIknewC UNIX para Dummies Perguntas & Respostas 1 03-25-2006 06:28
Pesquisar e substituir a string entre 2 pontos whited05 Programação Shell Script e 3 10-11-2005 03:05
string pesquisa substituir krishna UNIX & avançada para usuários experientes 1 12-19-2001 01:49

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-10-2008
gstuart gstuart is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 16
Procurar, substituir string em ficheiro1 com seqüência de (tabela) ficheiro2?

Olá: Eu tenho outra pergunta. Considere os seguintes dois amostra, delimitado por tabulações arquivos:

File_1:

Abf1 YKL112w
Abf1 YAL054c
Abf1 YGL234w
Ace2 YKL150w
Ace2 YNL328c
Cup9 YDR441c
Cup9 YDR442w
Cup9 YEL040w
...


Arquivo 2:

...
ABF1 YKL112W
ACE2 YLR131C
CUP9 YPL177C
...

File_2 é uma "tabela"; quero substituir $ 1 em File_1 na correspondência $ 2 no campo File_2 e adicionalmente, acrescentando uma coluna central que contém a string "tf", e uma coluna de "outros" ( "1" na primeira coluna posição), todos delimitado por tabulações.

Além disso, seria ideal se o caso poderia ser ignorada para a busca / substituição, mas que a saída é tudo alfabética maiúscula [az] convertido para [AZ].

Atenciosamente, estes genes são levedura, além de números e letras, alguns dos genes vai conter traços (por exemplo, YBR162W-A), mas nenhum deles irá conter vírgulas, semicolons, espaços, etc

Saída File_3:

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
...

Isto está relacionado com (mas diferente da) minha pergunta anterior,

Biólogo molecular exige ajudar re: search / replace script

Aqui, a primeira coluna é um "dummy" peso valor, para manter a "compatibilidade campo", com o meu anterior arquivo, como mostrado neste exemplo:

1 a gi b
Pp 1 a uma
1 pp uma c
1 t gi u
1 t gi w
1 t gi x
1 t pp z
2 pp um d
2 pp e um
2 t gi v
2 t gi z
3-A, pp b
3 t y gi
...

Afinal, eu vou acabar com um processo como este, com US $ 1 \u003d peso, gene1 \u003d $ 2, $ 3 \u003d associação, $ 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-A YLR363W gi YNL143C
4-A YLR363W gi YPR123C
1-A YLR363W gi YLR467W
1-A YLR363W pp YNR073C
2 YBL012C pp YGL232W
2 YBL012C pp YOR102W
2-A YLR363W gi YFL066C
2-A YLR363W gi YNR073C
3 YBL012C pp YCL045C
3-A YLR363W gi YKL100C
...

Obrigado - Mais uma vez, muito * * muito apreciada!

Atenciosamente, Greg S. :-)
  #2 (permalink)  
Old 04-11-2008
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.326
Citação:
Originally Posted by gstuart View Post
Olá: Eu tenho outra pergunta. Considere os seguintes dois amostra, delimitado por tabulações arquivos:

File_1:

Abf1 YKL112w
Abf1 YAL054c
Abf1 YGL234w
Ace2 YKL150w
Ace2 YNL328c
Cup9 YDR441c
Cup9 YDR442w
Cup9 YEL040w
...


Arquivo 2:

...
ABF1 YKL112W
ACE2 YLR131C
CUP9 YPL177C
...

File_2 é uma "tabela"; quero substituir $ 1 em File_1 na correspondência $ 2 no campo File_2 e adicionalmente, acrescentando uma coluna central que contém a string "tf", e uma coluna de "outros" ( "1" na primeira coluna posição), todos delimitado por tabulações.

Além disso, seria ideal se o caso poderia ser ignorada para a busca / substituição, mas que a saída é tudo alfabética maiúscula [az] convertido para [AZ].

Atenciosamente, estes genes são levedura, além de números e letras, alguns dos genes vai conter traços (por exemplo, YBR162W-A), mas nenhum deles irá conter vírgulas, semicolons, espaços, etc

Saída File_3:

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
...
Isto deve dar a saída desejada:


Código:
 awk '
FNR==NR{a[tolower($1)]=$2;next} 
tolower($1) in a{print "1 " a[tolower($1)] " tf " toupper($2)}
' "File_2" "File_1"

Atenciosamente
  #3 (permalink)  
Old 04-11-2008
gstuart gstuart is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 16
Isto é absolutamente maravilhoso! ... :-)

Aqui é o meu entendimento de Franklin52 do código:

Unix Manuals - Awk Referência

# \u003d\u003d É "é igual"

tolower (string): Retorna a string com todas as maiúsculas substituídas com suas minúsculas equivalentes.

toupper (string): Retorna a string com todas as minúsculas em maiúsculas substituídas com seus equivalentes.

FNR: número recorde no arquivo de entrada.

NR: Número de registros processados.

Assim, o script acima traduz (? - Corrija-me se estou enganado), como

awk '
FNR \u003d\u003d NR (um [tolower ($ 1)] \u003d $ 2; próxima)

enquanto o número do registro (linha) é igual ao número total de registros (é verdade), não todas as seguintes características:
Get $ 1 (o nome comum gene - convertido em minúsculas - necessária uma vez que o campo correspondente na File_1 é minúscula, caso contrário, ele irá falhar o "jogo" - Linux é sensível a maiúsculas e minúsculas) na pesquisa do arquivo (File_2), set (alterá-lo ) para a (já maiúsculo) sistemática gene nome ($ 2) na mesma tabela, então ler o próximo registro número (linha);

tolower ($ 1) em uma (print "1" uma [tolower ($ 1)] "tf" toupper ($ 2))

agora, para cada US $ 1 em File_2 (actualmente fixado em maiúsculas $ 2, a partir da tabela), na segunda imagem (File_1, a ser convertido para um), imprimir
"1", $ 2 a partir de File_2; "tf", $ 2 a partir de File_1 (retornados como maiúsculas, para converter a rasteira minúsculas c, w,-um, etc)

' "File_2" "File_1"

File_1 \u003d arquivo a ser processado (convertido)
File_2 \u003d "lookup file" ( "common_to_systematic.tab)

?!


Isto funciona brilhantemente! Muito obrigado, Franklin52!

Tenha uma super semana! ... Greg :-)
  #4 (permalink)  
Old 02-06-2009
RickR RickR is offline
Usuário
  
 

Join Date: Feb 2009
Posts: 1
Renomeando vários arquivos de uma tabela

É possível modificar o script acima para renomear arquivos com base em uma tabela?

por exemplo:
Atual Novo
A87324.jpg A1372365.jpg
A89732.jpg A98274.jpg
A130347.jpg A73689.jpg
...

Obrigado,

Rick
  #5 (permalink)  
Old 06-07-2009
aenagy aenagy is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 1
Citação:

Código:
 
awk 'FNR==NR{a[tolower($1)]=$2;next} tolower($1) in a{print "1 " a[tolower($1)] " tf " toupper($2)}' "File_2" "File_1"

Estou a tentar modificar o código acima para uma situação semelhante. Tenho dois ficheiros de entrada. O primeiro arquivo (Datastores) é um CSV com amigável nomes na primeira coluna e UUIDs na segunda coluna. O segundo arquivo (VMS) é uma lista de arquivos com o caminho completo utilizando o UUID. Por exemplo:

----- ----- Datastores.csv
nome amigável 1, UUID1
nome amigável 2, UUID2
nome amigável 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

O que eu estou procurando é a produção que tem o seguinte aspecto:

----- ----- Output.txt
/ pasta / nome amigável 3/vm1.vmx
/ pasta / nome amigável 2/vm2.vmx
/ pasta / nome amigável 1/vm3.vmx
/ pasta / nome amigável 3/vm4.vmx
etc
----- ----- Output.txt

A amostra awk não é intuitivo para mim, mesmo após a leitura de outra explicação e indo ao longo dos O'Rielly bolso referência. O caso de uma das entradas, não necessita de ser alterada - se houver um problema com o processo correspondente, então eu tenho outras questões a tratar.

Obrigado pela vossa ajuda antecipadamente.
  #6 (permalink)  
Old 02-06-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.130

Código:
#!/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
Usuário
  
 

Join Date: May 2009
Posts: 9
oi gente!

Estou de novo a shell script .. Eu queria saber abt sed comando e como ele funciona?

aqui está o que eu quero fazer, quero pesquisa string original export.txt no arquivo que é:
exportação mibs \u003d \ opt \ mymibs \

Gostaria de substituí-lo por
exportação mibs \u003d \ opt \ new_mibs \

Por favor ajudem com isso

thanks in advance

Última edição por allrise123; em 05/23/2009 05:17..
Reply

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 08:49.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0