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
Newbie ajudar com a Nova Linha & Blank Line kthatch UNIX para Dummies Perguntas & Respostas 5 01-23-2009 04:19
sed: apagar regex linha e se próxima linha em branco one71 Programação Shell Script e 2 09-18-2008 06:53
Como chegar a última linha em branco não? tqlam Programação Shell Script e 6 01-17-2008 07:13
Linha em branco? varungupta UNIX & avançada para usuários experientes 2 09-10-2007 01:52
cant find comando que retorna linha em branco jeffersno1 UNIX para Dummies Perguntas & Respostas 2 11-15-2001 04:14

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 Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-18-2009
ddrew78 ddrew78 is offline
Usuário
  
 

Join Date: Mar 2009
Posts: 8
Localizar linha em branco antes

Olá,

Na verdade, tenho duas questões. Em primeiro lugar, aqui é o arquivo da forma como é agora.

someword someword: 1
nova palavra-nova palavra-abcd
someword someword: 10
nova palavra-nova palavra-abcd
Esta_B whatIneed: 3


someword someword: 5
nova palavra-nova palavra-abcd

Preciso de ir buscar a linha antes do 2 esboços e movê-lo para um arquivo diferente. Tentei usar sed, Mas só fico recebendo mensagens de erro. Além disso, pode haver nenhuma, uma ou várias instâncias do presente dentro do ficheiro.

Eu provavelmente deverá também mencionar que esta é uma parte de um maior perl script que estou trabalhando. Tenho feito tudo o resto, o arquivo acima é efectivamente gerados pelo script. Eu também tenho tudo abaixo é completa, mas estou completamente preso neste momento.

Qualquer ajuda com qualquer seria apreciada.

Última edição por ddrew78; em 03/18/2009 07:43..
  #2 (permalink)  
Old 03-18-2009
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.088
cerca de pensamento de baixo, espero que possa ajudá-lo a algum

Código:
open $fh,"<","yourfile";
open $out,">>","youroutfile";
undef $/;
$str=<$fh>;
print $out split(/\n^$\n^$\n/s,$str,2)[0];
  #3 (permalink)  
Old 03-18-2009
aaaaargh aaaaargh is offline
Usuário
  
 

Join Date: Aug 2006
Lugares: 20
Aqui é meu, feio, mas deve fazer o truque

(não testado)

Código:
awk 'BEGIN{i=0}
  { content[NR]=$0; if (($0=="")) {b[i]=NR;i++} j++;} 
  END 
 { 
   for (x=0;x<=b[0];x++) 
  {print content[x] > "file1" } for (x=b[1];x<=j; x++) { print content[x] > "file2"}   
}'  /var/tmp/file
  #4 (permalink)  
Old 03-19-2009
ddrew78 ddrew78 is offline
Usuário
  
 

Join Date: Mar 2009
Posts: 8
Re: Localizar linha em branco antes

Verão cereja,

aqui é o que acabei no meu script:

#! / usr / bin /perl

abrir $ fh ,"<"," myfile ";
abrir para fora $ ,">>"," mynewfile ";
undef $ /;
$ str \u003d <$ fh>;
print $ out split (/ \ n ^ $ \ n $ ^ \ n / s, $ str, 2) [0];

Recebi a mensagem de erro abaixo. Qualquer idéias? Agradeço a ajuda.

ansipre2 erro de sintaxe na linha 7, próximo a ") ["
Execução de ansipre2 abortado devido a compilação erros.
  #5 (permalink)  
Old 03-19-2009
ddrew78 ddrew78 is offline
Usuário
  
 

Join Date: Mar 2009
Posts: 8
Re: Localizar linha em branco antes

Citação:
Originally Posted by aaaaargh View Post
Aqui é meu, feio, mas deve fazer o truque

(não testado)

Código:
awk 'BEGIN{i=0}
  { content[NR]=$0; if (($0=="")) {b[i]=NR;i++} j++;} 
  END 
 { 
   for (x=0;x<=b[0];x++) 
  {print content[x] > "file1" } for (x=b[1];x<=j; x++) { print content[x] > "file2"}   
}'  /var/tmp/file


Obrigado pela resposta. Infelizmente estou de novo a este e não pode figurar como implementar isso em meu script. Abaixo está as duas últimas linhas do script para obter o arquivo que tinha anteriormente.

sistema "dos2unix ansi3> ansi7";
system "mv ansi7 ansi3";

Obrigado novamente por qualquer ajuda.
  #6 (permalink)  
Old 03-19-2009
rikxik's Avatar
rikxik rikxik is offline
Usuário
  
 

Join Data: dezembro 2007
Lugares: 250
Código:
$ cat sd
sed -n '/^$/!{
h
}
/^$/{
N
/^\n$/ {
x
p
q
}
}' fl
$
$ cat fl
someword someword:1
new-word new-word abcd
someword someword:10
new-word new-word abcd
thisis whatIneed:3


someword someword:5
new-word new-word abcd
$
$ sd
thisis whatIneed:3
Tenha cuidado quando você colar esse corte - não deve haver qualquer espaço.

Última edição por rikxik; em 03/19/2009 10:49..
  #7 (permalink)  
Old 03-20-2009
ddrew78 ddrew78 is offline
Usuário
  
 

Join Date: Mar 2009
Posts: 8
Obrigado a todos que me ajudaram nesta matéria. Após muita dor eu decidi ir para uma rota diferente e em vez anexado a repetir que a seqüência anterior da linha. Concedidas, que resultaram em poucas linhas de código extra, mas o que o diabo. Basta um FYI, abaixo é o código que acabou dando-me as linhas Eu estava procurando inicialmente.



open (FILE7, "> file7");
open (MYINPUTFILE, "ficheiro3");

while (<MYINPUTFILE>) (
chomp;
my $ someword \u003d "";
my $ nova palavra-\u003d "";
if (/ ^ someword /) ($ someword \u003d $ _; while (<MYINPUTFILE>) (chomp;
if (/ ^ nova palavra-/) (
imprimir FILE7 "$ someword $ _";
FILE7 print "\ n";)
último;
)
)
)
system "mv file7 ficheiro3";
sistema "dos2unix ficheiro3> file7";
system "mv file7 ficheiro3";
sistema "gato ficheiro3 | cut-d" "-f1-2>> file0 ';
sistema "sort-n file0> ficheiro1";
system "mv ficheiro1 file0";
sistema "file0 sort | uniq-u> ficheiro1";
system "mv ficheiro1 file0";
Closed Thread

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 04:15.


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