2009-12-02 4 views
0

Soit que dire que je veux les différents fichiers à partir de « processus » jusqu'au prochain processus ». Par exemple fichier d'entréeComment filtrer différents fichiers d'un fichier

 
Process=0 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 

Process=1 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 
Process=2 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 

sortie prévue File_0 doit contenir

 
Process=0 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 

File_1 doit contenir

 
Process=1 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 

File_2 doit contenir

 
Process=2 
We prefer questions that can be answered, not just discussed. 
Provide details. Write clearly and simply. 
If your question is about this website, ask it on meta instead. 

Répondre

2

Regardez la commande csplit sous Linux. Il sépare les fichiers texte à des délimiteurs (qui peuvent être définis par une expression régulière).

1

utilisation gawk/nawk (Solaris)

gawk -F"=" '/Process/{f=1;n=$2;print $0 > "File_"n;next} 
f && /Process/{f=0} 
f&&NF{print $0 > "File_"n} 
' file 
2

Cela crée les fichiers pour chaque section et affiche le texte à leur disposition. S'il y a du texte avant le premier "Processus" alors il est placé dans un fichier appelé "Préambule".

awk -F '[ =]' 'BEGIN {file="Preamble"} {if ($1 == "Process") file="File_"$2; print >> file}' inputfile 
+1

Joli usage de FS. Il pourrait être réécrit comme: 'awk -F '[=]' 'BEGIN {fichier =" Préambule "} $ 1 ==" Process "{fichier =" Fichier _ "$ 2} {print >> fichier}' fichier d'entrée' –

Questions connexes